디자인 패턴12 자바(JAVA) - 어댑터(Adapter) 패턴 - 자바(JAVA) - 어댑터(Adapter) 패턴 1. 의도 호환되지 않는 클래스(레거시 코드, 의존성이 높은 코드 등)들이 함께 동작하게끔 함. 2. 용도 하나의 인터페이스를 다른 클래스가 사용할 수 있도록 변환하는 것이 목표다. 어댑터는 부모 클래스를 수정하지 않고도 다른 인터페이스를 가진 객체들이 협업하게끔 만들 수 있다. 어댑터 패턴은 크게 객체 어댑터 패턴과 클래스 어댑터 패턴으로 나뉜다. 객체 어댑터 패턴은 두 개의 인터페이스를 구현하여, 하나의 인터페이스를 다른 인터페이스의 객체로 변환한다. - 기존 클래스의 코드 변경 없이 인터페이스를 변환하여 사용할 수 있다. 클래스 어댑터 패턴은 기존 클래스를 상속받아 새로운 클래스를 만들고 인터페이스를 연결한다. - 새로운 클래스를 만들어야 하므로,.. 2023. 11. 21. 자바(JAVA) - 프로토타입(Prototype) 패턴 - 자바(JAVA) - 프로토타입(Frototype) 패턴 1. 의도 원형이 되는 인스턴스를 사용하여 생성할 객체의 종류를 명시하고, 이렇게 만든 견본을 복사해서 새로운 객체를 생성 즉, 기존 인스턴스를 복제하여 새로운 인스턴스를 만드는 것 2. 용도 객체를 생성하는데 비용이 많이 들고, 비슷한 객체가 이미 있는 경우에 사용 객체를 복사하여 필요에 따라 수정하는 메커니즘을 제공 3. UML 4. 구현 - 적용 전 public class Member { private final String name; private final String address; private final BasicItem basicItem; public Member(String name, String address, BasicIte.. 2023. 11. 20. 자바(JAVA) - 플라이 웨이트(Flyweight) 패턴 - 자바(JAVA) - 플라이 웨이트(Flyweight) 패턴 1. 의도 동일하거나 유사한 객체들 사이에 가능한 많은 데이터를 서로 공유해서 사용하도록 하여 메모리 사용량을 최소화하는 소프트웨어 디자인 패턴 2. 용도 주로 메모리 사용량을 줄여서 효율성을 높일 때 사용 3. UML 4. 구현 public class Font { final String family; final int size; public Font(String family, int size) { this.family = family; this.size = size; } } ========================================================================= public class FontFac.. 2023. 11. 16. 자바(JAVA) - 팩토리 메서드(Factory Method) 패턴 1. 의도 부모 클래스에 알려지지 않는 구체 클래스를 생성하는 패턴이며, 자식 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴 2. 용도 객체 생성을 관리하고 확장 가능한 디자인을 유지해야 하는 시스템에서 많이 사용함 예를 들면, 라이브러리와 프레임워크에서 인스턴스 생성을 추상화할 때 사용함 3. UML 4. 구현 public abstract class Pizza { protected Integer price; protected PizzaType type; public void print() { System.out.println("이 피자는 " + type.name() + "피자이며 가격은 " + price + "원 입니다."); } } ==================================.. 2023. 11. 15. 자바(JAVA) - 추상팩토리(Abstract Factory) 패턴 1. 의도 구체적인 서브클래스 정의 없이 관련 객체들을 하나의 군으로 통합시킨 인터페이스를 제공함. 2. 용도 일관된 방식으로 객체를 생성하고자 할 때 유용함. 구체적인 객체 생성을 모두 구체 팩토리 클래스에 위임함으로써, 여러 객체가 생성되는 것을 방지함. 3. UML 4. 구현 public class Client { public static void main(String[] args) { ComputerFactory computerFactory = new LGComputerFactory(); computerFactory.createKeyBoard(); computerFactory.createMouse(); } } // LGKeyBoard 생성 // LGMouse 생성 ==================.. 2023. 11. 8. 자바(JAVA) - 컴포지트(Composite) 패턴 1. 의도 객체들의 관계를 트리 구조로 구성해 부분 - 전체 계층을 표현하는 패턴으로 사용자가 단일 객체와 복합 객체 모두 동일하게 다루도록 한다. 2. 용도 복합 객체와 단일 객체의 처리 방법이 다르지 않을 경우, 전체 - 부분 관계로 정의할 수 있다. 전체 - 부분 관계의 대표적 예는 directory - file 이 존재한다. 이러한 전체 - 부분 관계를 효율적으로 정의할 때 유용하다. 3. UML 4. 구현 public interface IItemComponent { int getPrice(); String getName(); } =============================================================== public class Bag implements II.. 2023. 11. 2. 이전 1 2 다음