[디자인 패턴] 디자인 패턴 정리 포스팅 썸네일 이미지

디자인패턴

[디자인 패턴] 디자인 패턴 정리

목적 좀 더 나은 코드를 위해 어떤 패턴을 써야 유용할 지 한눈에 보고 판단하기 위함 목차 디자인 패턴이란? 생성패턴 구조패턴 행위패턴 디자인 패턴 비교 1. 디자인 패턴이란? 프로그램 설계 시 자주 발생하는 문제들을 해결 할 수 있는 프로그램 설계 방법 생성패턴 : 객체의 생성과 관련된 패턴 구조패턴 : 객체를 조합하여 더 큰 구조를 만드는 패턴 행위패턴 : 객체 사이의 알고리즘이나 책임 분배에 관련된 패턴 2. 생성패턴 프로토타입 기존에 생성된 객체를 복제해서 새로운 객체를 생성하는 패턴 기본은 얕은복사 Cloneable의 clone메소드를 오버라이딩하여 사용 팩토리 메서드 객체의 생성을 서브클래스로 분리하여 처리하는 패턴 팩토리 클래스를 만들어 클라이언트의 요구에 따른 객체를 반환 추상 팩토리 연관..

2021.05.01 게시됨

[디자인 패턴] State 패턴 포스팅 썸네일 이미지

디자인패턴

[디자인 패턴] State 패턴

- 정의 객체 내부의 상태에 따라 다른 행동을 취할 수 있게 해주는 패턴이다 - UML 1. State인터페이스안에 두 가지 sitDown과 getUp메소드를 정의함 2. SittingPerson과 StadingPerson은 State인터페이스를 구현하여 getUP과 sitDown메소드를 오버라이딩함 3. Person클래스는 setState를 통해 상태를 설정하고, getUp과 sitDown을 통해 행위를 수행하도록 함 - 코드 State interface public interface State { public void sitDown(Person person); public void getUp(Person person); } SittingPerson class public class SittingPer..

2020.03.24 게시됨

[디자인 패턴] Mediator 패턴 포스팅 썸네일 이미지

디자인패턴

[디자인 패턴] Mediator 패턴

- 정의 다대다 관계에서 일대다 관계로 만들어주는 패턴이다 - UML 1. Cook인터페이스는 배달원(중재자)을 설정하는 setMediator메소드와 음식을 만드는 makeFood메소드를 갖는다 2. Cook인터페이스를 구현한 ChineseChef, JapaneseChef, KoreanChef는 메소드를 오버라이딩하여 구현한다 3. Mediator클래스는 배달할 음식을 받는 deliveryFood메소드와 주문 고객을 추가하는 addCutomer메소드를 갖는다 4. Customer인터페이스는 음식을 받는 receiveFood메소드를 갖는다 5. Customer인터페이스를 구현하는 Apartment, Villa, Office클래스는 receiveFood메소드를 오버라이딩한다 - 코드 Cook interfac..

2020.03.23 게시됨

[디자인 패턴] Observer 패턴 포스팅 썸네일 이미지

디자인패턴

[디자인 패턴] Observer 패턴

- 정의 어떤 객체에 이벤트가 발생했을 때, 이 객체에 등록된 옵저버들에게 통지하도록 하는 디자인 패턴이다 - UML 1. Subject인터페이스는 옵저버들을 추가, 삭제 및 알림 기능을 갖고 있으며 옵저버의 관리 역할을 한다 2. NewspaperPublisher클래스는 Subject인터페이스를 상속받아 옵저버들을 관리할 수 있다 3. Observer인터페이스는 update메소드를 통해 상태가 바뀔때 마다 그에 맞는 행동을 취할 수 있게 만든다 4. Subscriber1, Subscriber2, Subscriber3클래스는 Observer인터페이스를 상속받아 update메소드를 구현한다. 생성자를 통해 NewspaperPublisher에게 자기 자신을 등록하고, unsubscribe메소드를 통해 pub..

2020.03.22 게시됨

[디자인 패턴] Facade 패턴 포스팅 썸네일 이미지

디자인패턴

[디자인 패턴] Facade 패턴

- 정의 일련의 서브시스템에 대한 통합된 인터페이스를 제공하여 여러 서브 시스템을 더 쉽게 사용할 수 있도록 해주는 패턴이다 - UML 1. Engine클래스는 엔진을 설치하는 installEngine메서드를 갖고 있다 2. Skeleton클래스는 뼈대를 생성하는 makeSkeleton메소드를 갖고 있다 3. Wheel클래스는 바퀴를 장착하는 equipWheel메소드를 갖고 있다 4. Car클래스는 생성자를 통해 각 클래스를 주입받고, makeCar메소드를 통해 makeSkeleton, installEngine, equipWheel의 메소드를 순차적으로 수행한다 - 코드 Engine class public class Engine { public void installEngine() { System.out..

2020.03.20 게시됨

[디자인 패턴] ChainOfResponsibility 패턴 포스팅 썸네일 이미지

디자인패턴

[디자인 패턴] ChainOfResponsibility 패턴

- 정의 요청이 들어올때 해당 요청을 처리할 수 없는 경우 다음 객체에게 문제를 넘김으로써 최종적으로 요청을 처리할 수 있도록 하는 패턴이다 - UML 1. Exception추상클래스를 생성한다 - Exception배열을 생성하여 4가지 Exception을 넣어준다 - Exception을 받아온 뒤 어떤 예외인지 찾기위해 next메소드를 수행하는 findError메소드 - Exception을 받아 현재 배열에 들어있는 예외들과 일치하는게 있으면 해당 Exception클래스를 반환하고 일치하는게 없으면 콘솔에 null을 반환하는 next메소드 - 파라미터로 받은 에러의 이름과 현재 클래스의 이름이 같은지 확인하는 check메소드 2. NullPointException, RuntimeException, Cl..

2020.03.19 게시됨

[디자인 패턴] Visitor 패턴 포스팅 썸네일 이미지

디자인패턴

[디자인 패턴] Visitor 패턴

- 정의 객체의 구조와 기능을 분리시켜 구조를 수정하지 않고도 새로운 동작을 기존의 객체 구조에 추가할 수 있게 만드는 패턴이다 - UML 1. Visitable인터페이스를 생성하고 Visitor타입을 받는 accept메서드를 선언한다 2. Visitable인터페이스를 구현하는 Office와 House클래스를 생성하고 Visitor타입을 받아 visit메서드를 실행하는 accept메서드를 구현한다. 각각의 name을 사무실과 가정집으로 설정한다 3. Visotr인터페이스를 생성하고 House와 Office타입을 받는 visit메소드를 선언한다 4. Visitor인터페이스를 구현하는 ComputerRepairman과 TVRepairman클래스를 생성하고 House와 Office타입을 받아 수리행위를 출력하..

2020.03.17 게시됨

[디자인 패턴] Decorator 패턴 포스팅 썸네일 이미지

디자인패턴

[디자인 패턴] Decorator 패턴

- 정의 객체의 결합 을 통해 기능을 동적으로 유연하게 확장 할 수 있게 해주는 패턴이다 - UML 1. Picture인터페이스를 만들고 이름을 반환하는 getName메소드를 선언한다 2. Picture인터페이스를 구현하는 BlueBackgroundPicture와 WhiteBackgroundPicture클래스를 만들고 getName함수를 오버라이딩하여 배경색상을 출력하도록 한다 3. Object추상클래스를 정의하여 Picture인터페이스를 담아둘 수 있게 하고, getName메소드를 선언하여 이름을 반환할 수 있도록 한다 4. Object추상클래스를 상속하는 Cloud, Tree, Flower클래스를 정의하고 getName메소드를 오버라이딩하여 각각의 물체 이름을 반환하도록 한다. 생성자를 통해 Pict..

2020.03.15 게시됨