본문 바로가기

Java #Design Patterns

(3)
Design Patterns - 4. Adapter Pattern 기존 코드를 재사용하기 위해 외부 인터페이스를 변환하는 작업이 많은데, 어댑터 패턴은 기존의 코드를 재사용하기 위해 내적, 외적 구조를 변환할 때 사용한다. 어댑터 패턴을 적용하면 클라이언트의 입장에서는 변화된 것 없이 기존 방식과 동일하게 코드를 작성해서 사용할 수 있다. Adapter 패턴은 한 클래스의 프로그래밍 인터페이스를 다른 클래스의 프로그래밍 인터페이스로 변환할 때 사용된다. 하나의 프로그램에서 서로 연관 관계가 없는 클래스들을 서로 연결하려 할 때 이 패턴을 사용할 수 있다. 이것을 구현하는 경우, 상속(Inheritance)을 이용하거나 객체 컴포지션(Object Composition)을 사용하는 두 가지 방법이 있다. 첫째, 상속을 이용하는 방법은 상이한 인터페이스를 가진 클래스로부터 ..
Design Patterns - 3. Singleton Pattern 하나의 클래스 당 하나의 인스턴스만을 생성하도록 하고, 그 인스턴스에 접근하는 단 하나의 static 메서드를 제공한다. 생성자가 여러번 호출되더라도 생성되는 객체는 하나이고 최초 생성 이후에는 생성한 객체를 리턴한다. 즉, 단 하나의 객체만 생성하고 생성된 객체를 공유해서 사용할 때 사용하는 패턴이다. Windows에서 작업 관리자, 프린트 스풀러 같은 것이 예. Spring에서 bean은 Singleton 객체이며 beanfactory 레지스트리에서 관리된다. 로그 프레임워크들에서 로그 객체들도 Singleton 이며 레지스트리에서 관리된다. ■ UML Class Diagram public static MakeACaptain getCaptain() // 클래스를 제어하는 단 하나의 공용 메서드 ■ C..
Design Patterns - 2. Factory Method Pattern 예제는 『Java Design Patterns A Tour of 23 Gang of Four Design Patterns in Java』 (Apress, 2016) 에서 가지고 옴 추상클래스가 객체 생성을 정의하지만, 객체 생성은 하위 서브클래스가 결정하는 구조. JDK에서 사용된 예 - SocketFactory https://docs.oracle.com/javase/8/docs/api/index.html?javax/net/SocketFactory.html ■ UML Class Diagram IAnimalFactory : Animal 생성을 정의한 추상 클래스 ConcreteFactory : 객체 생성 담당, IAnimalFactory의 구현(하위) 클래스, AnimalType을 인자로 받아서 객체를 생..