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

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

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

디자인패턴

[디자인 패턴] Builder 패턴

- 정의 복잡한 단계로 생성되는 생성자를 더 쉽고 가독성이 높게 생성할 수 있도록 고안된 패턴이다 - UML 1. Computer클래스를 만들고 cpu, ram, storage를 멤버 변수로 갖는다. Getter와 Setter를 설정하고 생성자를 정의한다 2. Computer객체 생성을 도와주는 ComputerBuilder클래스를 만든다. 이 클래스 역시 cpu, ram, storage를 멤버 변수로 갖는다. cpu, ram, storage 메소드를 통해 값을 저장하고 builder메소드로 Computer객체를 생성한다 - 코드 Computer class public class Computer { private String cpu; private String ram; private String stora..

2020.03.10 게시됨

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

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

디자인패턴

[디자인 패턴] Singleton 패턴

- 정의 하나의 인스턴스만을 생성하고, 인스턴스를 어디서든 참조할 수 있도록 하는 패턴이다 - UML 1. SystemSpeaker클래스를 선언하고 int형 volume, SystemSpeaker형 instance를 static으로 선언한다. instance는 static형이기 때문에 어디서든 참조가 가능하고 모든 SystemSpeaker객체가 instance를 공유한다 - 코드 SystemSpeaker class public class SystemSpeaker { static private SystemSpeaker instance; private int volume; private SystemSpeaker() { volume=5; } public static SystemSpeaker getInstanc..

2020.02.10 게시됨