[디자인 패턴] 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 게시됨

[디자인 패턴] 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 게시됨

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

디자인패턴

[디자인 패턴] Composite 패턴

- 정의 단일 객체와 복합 객체를 동일하게 처리 할 수 있게끔 하는 패턴이다. - UML 1. Component라는 인터페이스 혹은 추상클래스를 만든다 2. Component를 상속 혹은 구현하는 Stuff클래스를 만든다 3. Component를 상속 혹은 구현하는 Box클래스를 만들고 Component타입을 담을 수 있는 List와 추가 및 삭제에 필요한 메서드를 정의한다 - 코드 Component abstract class public abstract class Component { protected String name; public Component(String name) { this.name = name; } } Stuff class public class Stuff extends Compone..

2020.03.13 게시됨

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

디자인패턴

[디자인 패턴] Bridge 패턴

- 정의 구현으로부터 추상레이어(기능)를 분리하여 각자 독립적으로 변형할 수 있게 하는 패턴이다 즉, 구현과 기능을 분리하여 구현한다 - UML 1. Making인테스페이스를 만들고 이를 구현하는 MakingApartment와 MakingVilla클래스를 만든다. 2. House추상클래스를 만들고 이를 상속하는 Apartment와 Villa클래스를 만든다 - 코드 Making interface public interface Making { public void buildSkeleton(); public void cementWall(); } MakingApartment class public class MakingApartment implements Making{ @Override public void b..

2020.03.12 게시됨

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

디자인패턴

[디자인 패턴] AbstractFactory 패턴

- 정의 서로 관련이 있는 객체들을 묶고 조건에 따라 관련된 객체들을 한꺼번에 객체를 생성하는 패턴이다 - UML 1. Food인터페이스를 만들고 이를 구현하는 WinterFood와 SummerFood클래스를 만든다 2. Clothes인터페이스를 만들고 이를 구현하는 WinterClothes와 SummerClothes클래스를 만든다 3. SeasonPlanFactory인터페이스를 만들고 이를 구현하는 SummerPlan과 WinterPlan클래스를 만들어 계절별로 계획을 실행할 수 있도록 한다 - 코드 Food interface public interface Food { public void eat(); } WinterFood class public class WinterFood implements Fo..

2020.03.11 게시됨

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

디자인패턴

[디자인 패턴] ProtoType 패턴

- 정의 인스턴스를 생성할 때, 기존에 생성된 인스턴스를 복사하여 새로운 인스턴스를 생성하는 패턴이다 - UML 1. Programming클래스를 선언하고 os, network, db를 멤버 변수로 갖는다. 각각의 변수마다 getter와 setter를 설정해주고 copy함수를 통해 인스턴스를 복사할 수 있도록 한다 - 코드 Programming class public class Programming implements Cloneable{ private String os; private String network; private String db; public String getOs() { return os; } public void setOs(String os) { this.os = os; } publi..

2020.02.11 게시됨