본문 바로가기

디자인패턴

(12)
Decorator Pattern_ver.02(스포츠카) 데코레이터 패턴을 사용하여 스포츠카의 종류에 각 파츠를 추가하여 최고 속력을 다르게 나타내도록 설계 public abstract class SportsCar { String name = "없음"; public String getName() { return name; } public abstract int speed(); } -------------------------------------- public abstract class Parts extends SportsCar{ SportsCar sportsCar; public abstract String getName(); } public class SuperCar extends SportsCar{ public SuperCar() { name = "슈퍼 스..
Decorator Pattern_카페 정의 객체에 추가 요소를 동적으로 더할 수 있음 훨씬 유연한 확장 데코레이터 객체를 조합함으로써 추가 기능을 설계 카페 //추상 클래스 public abstract class Beverage { public enum Size {TALL, GRANDE, VENTI}; Size size = Size.TALL; String description = "제목 없음"; //getDescription 구현 public String getDescription() { return description; } public void setSize(Size size) { this.size = size; } public Size getSize() { return this.size; } //cost()는 서브클래스에서 구현해야 함..
Builder Pattern 정의 객체 생성 방법을 정의하는 클래스와 표현 방법을 정의하는 클래스를 별도로 분리 다른 표현이라도 이를 생성할 수 있는 동일한 절차 제공 구현 코드를 쉽게 변경 가능 복합 객체를 구축하는 용도로 자주 사용 방학 계획 public abstract class VacationBuilder { String name; List accommodations = new ArrayList(); List events = new ArrayList(); //숙소의 정보 public abstract VacationBuilder addAccommodation(); public abstract VacationBuilder addAccommodation(String name); public abstract VacationBuild..
Singleton Pattern_ver.02 자동차 운전 public class CarSingle { private boolean Inuse; private static CarSingle uniqueInstance; private CarSingle() { Inuse = false; } public static CarSingle getInstance() { if (uniqueInstance == null) { uniqueInstance = new CarSingle(); } return uniqueInstance; } //사용중이 아니면 운전 시작, Inuse를 true로 변경 public void drive(){ Inuse = true; System.out.println("Driving"); } //차량 운행을 멈추면 Inuse를 false로 변경 ..
Singleton Pattern 정의 클래스의 인스턴스는 하나만 생성 가능 그 인스턴스로의 전역접근을 제공 전역변수의 단점 보완 생성자를private로 선언 public class Singleton { //하나뿐인 인스턴스를 저장하는 정적 변수 private static Singleton uniqueInstance; //private 로 선언했으므로 singleton 에서만 인스턴스 생성 가능 private Singleton() {} //인스턴스 == null >> 인스턴스가 아직 생성되지 않음 public static Singleton getInstance() { //싱글턴 객체 생성 후 uniqueInstance 에 객체 대입 //게으른 인스턴스 생성 이라고 부름 if (uniqueInstance == null) { uniqueIn..
Factory Method_ver.02 (햄버거) 햄버거를 판매하는 2개의 지점 팩토리 메소드를 사용하여 구현 git: https://github.com/Pearlmoon997/Design_Patterns/tree/master/src/FactoryMethod/Hamburger GitHub - Pearlmoon997/Design_Patterns: Design_Patterns Design_Patterns. Contribute to Pearlmoon997/Design_Patterns development by creating an account on GitHub. github.com
Abstract Factory _ 피자가게 정의 구상 클래스에 의존하지 않고 서로 연관되는 객체로 이루어진 제품군을 생산하는 인터페이스 구상클래스는 서브 클래스에서 생성 의존성 역전 원칙을 사용 복잡하고 유연성이 더 필요한 프로그램에 좋음 피자가게 git: https://github.com/Pearlmoon997/Design_Patterns/tree/master/src/FactoryMethod/Pizza_abstractFactory GitHub - Pearlmoon997/Design_Patterns: Design_Patterns Design_Patterns. Contribute to Pearlmoon997/Design_Patterns development by creating an account on GitHub. github.com 참고문서: ..
FactoryMethod _ 피자가게 정의 클래스의 인스턴스를 만드는 것을 서브클래스가 결정 사용하는 서브클래스에 따라 생산되는 객체 인스턴스가 결정 피자가게_ver01 git: https://github.com/Pearlmoon997/Design_Patterns/tree/master/src/FactoryMethod/Pizza GitHub - Pearlmoon997/Design_Patterns: Design_Patterns Design_Patterns. Contribute to Pearlmoon997/Design_Patterns development by creating an account on GitHub. github.com 참고문서: 헤드퍼스트 디자인 패턴(개정판)