회사의 웹 사이트가 사용자에게 많은 이미지를 보여줌.그로 인하여 페이지의 로딩 시간이 길어져서 UX 가 저하됨.프록시 패턴으로 이미지 로딩을 최적화 가능구현공통 인터페이스public interface Image { void display(); }실제 이미지 클래스public class RealImage implements Image { private String fileName; public RealImage(String fileName) { this.fileName = fileName; this.loadFromDisk(); } private void loadFromDisk() { System.out.println("Loalding " + fileName); } @Override public void d..
전략 패턴 ( Strategy Pattern )정의알고리즘 군을 정의하고 각각을 캡슐화하여, 교환해서 사용할 수 있게 만듬.알고리즘을 사용하는 클라이언트과 독립적으로 알고리즘을 변경가능구성요소전략 객체실제 전략 메서드를 구현하는 객체컨텍스트전략 객체를 사용하는 부분전략 객체의 사용자나 소비자 역할을 함.클라이언트전략 객체를 생성하고 컨텍스트에 주입전략 객체 공급자.코드예시 시나리오군인, 무기, 보급 장교무기 (전략): 실제 행동 (즉, 전략)을 나타냅니다. 예를 들면 총, 검, 활 등이 있습니다.군인 (컨텍스트): 무기 (전략)를 사용하여 전투를 수행합니다.보급 장교 (클라이언트): 군인에게 어떤 무기 (전략)를 선택하여 주입할지를 결정합니다.public interface Strategy { public..
정의전략 패턴의 변형 패턴스프링 FW 에서 특히 자주 사용되는 디자인 패턴DI - 의존성 주입 : 에서 사용하는 특별한 형태의 전략 패턴특징전략 패턴과 구조적으로 유사함.전략을 익명 내부 클래스로 정의하여 사용별도의 전략 파일을 따로 정의할 필요가 없음동작방식템플릿 메서드에서 실행되어야 하는 특정한 알고리즘의 일부분을 콜백 메서드로 정의콜백 메서드의 구현을 템플릿 메서드에서 호출하는 클라이언트에서 제공콜백 메서드의 구현은 익명 내부 클래스 형태로 제공됨.장점별도 전략 클래스 파일 정의 필요 X코드의 양 줄어듬.관련 코드를 한 곳에서 보기 용이동적으로 전략의 구현을 변경 혹은 제공이 용이함.코드public interface Strategy { public abstract void runStrategy();..
싱글톤 패턴객체의 인스턴스를 하나만 생성하도록 하는 설계 패턴특정 클래스의 인스턴스가 프로젝트 전반에 걸쳐 하나만 존재 + 이를 여러 곳에서 공유하여 사용하고 싶은 경우 사용자원의 중복을 피하기 위해 사용사용처DB 커넥션 풀스레드 풀시스템 설정 객체필요성시스템의 설정 정보를 저장하는 객체가 여러 개 생성 시, 각 설정 정보 간의 불일치 발생가능성자원의 낭비 방지구현법생성자의 private 접근 제어외부에서 인스턴스를 임의로 생성할 수 없어야 함.정적 참조 변수해당 클래스 인스턴스 참조가능한 private 정적 참조 변수가 필요함.해당 변수로 생성된 유일한 인스턴스 참조함정적 메서드외부에서 해당 클래스의 인스턴스를 얻을 수 있는 정적 메서드가 필요함인스턴스가 생성 X → 해당 메서드 내에서 인스턴스 생성 ..
템플릿 메서드 패턴알고리즘 구조를 메서드에 정의하고, 그 일부 단계를 서브 클래스에서 구현할 수 있도록 하는 디자인 패턴코드예시적용전 package org.example.templateMethodPattern; public class Dog { public void playWithOwner() { System.out.println("귀염둥이 이리온..."); System.out.println("멍!멍!"); System.out.println("꼬리 살랑 살랑~"); System.out.println("잘했어"); } }package org.example.templateMethodPattern; public class Cat { public void playWithOwner() { System.out.pr..
요리와 OOP요리프로그래밍요리도구객체 지향의 4대 원칙(캡! 상추다)요리도구 사용법설계 원칙 ( SOLID )레시피디자인 패턴디자인 패턴의 중요성프로그래밍에서 반복적으로 나타나는 문제를 해결하기 위한 베스트 프랙티스객체 지향의 특성과 설계 원칙 기반 → 다양한 개발 문제 효과적으로 해결가능스프링과 디자인 패턴객체 지향의 원칙 극대화한 프레임워크스프링에도 디자인패턴이 녹아들어가 있음.디자인 패턴 구현 방식3가지 특성을 주로 이용함상속 ( extends )인터페이스 ( interface / implements )합성 ( 객체를 속성으로 사용 ) Uploaded by N2T