분류 전체보기41 Command Pattern 1. 정의 1) 요구사항(요청, 명령)을 객체로 캡슐화 시킴. 2) 명령이 객체로 캡슐화 되기 때문에 큐에 넣거나 로그로 남길 수 있고, 작업 취소(undo) 기능 구현 가능 2. 문제 1) 사용하려는 객체(명령)가 많고, API가 서로 다른 경우 예) 홈 리모컨의 경우 차고문, 전등, TV, Stereo, 에어컨 등 사용해야 하는 객체가 너무 많고, 서로 다른 명령들로 구성되어 있음 3. 해결방안 1) 실행과 요청을 분리한다.(decoupling) 예) 리모컨 --> 커맨드 클래스 2019. 12. 31. Singleton Pattern 1. 정의 1) 클래스가 한 개의 인스턴스만을 만들 수 있도록 하고, 어디서나 생성된 인스턴스에 접근할 수 있도록 함 2. 문제 1) 여러 객체가 생성되면 상태 관리가 어려움 예) 중앙 난방 관리 클래스가 있는데, 이를 여러 객체를 생성하여 중앙 난방을 관리하게 되면 관리가 어려워진다. 3. 해결방안 1) 클래스의 인스턴스를 하나만 생성하도록 한다. 4. 사용 예제 1) 초콜렛 보일러 관리 클래스 1-1) 일반적인 싱글턴 버전 public class ChocolateBoiler { private static ChocolateBoiler uniqueInstance; private boolean empty; private boolean boiled; private ChocolateBoiler() { empt.. 2019. 12. 30. Factory Pattern 0. 개요 1) 강의에서 배운 패턴중에 개인적으로 이해하기도 어렵고 잘 와닿지 않은 패턴이었다. 이 패턴을 공부하려는 분들은 이론적인 내용보다는 간단한 예제라도 코드를 통해 학습하는게 더 좋을 것 같다. 나는 음식 프랜차이즈 개념을 통해 이해하는게 좋았다. 1. 정의 1) 객체 생성용 인터페이스를 정의한다. 2) 서브클래스가 어떤 객체를 생성할 지 결정하도록 한다. 2. 문제 1) 필요한 클래스들을 모두 구현하고 클라이언트에서 new를 통해서 생성하는 것은 비효율적이다. 2) 클래스가 많아지거나 변경되면 클라이언트 측 변경이 많아짐 3. 해결방안 1) 객체를 생성하는 클래스들을 캡슐화하여 사용한다. 2) 클라이언트는 캡슐화된 인터페이스를 사용하여 목적에 맞는 객체를 생성한다. 4. 사용 예제 1) 피자 .. 2019. 12. 27. Decorator Pattern 과제 과제 : 1) 프로그램이 실행되면 displays.txt 파일을 읽어서 내용에 따라 적절한 디스플레이를 화면에 배치한다 2) Hud Display는 기본적인 디스플레이며, 사용자가 추가할 수 있는 디스플레이는 speed, weather, time 이 있다 3) 과제에서는 문제를 단순화시키기 위해 해당 디스플레이의 내용은 time은 해당 프로그램이 실행되는 시간, weather, speed 디스플레이는 고정된 내용만을 보이는 것으로 한다 설계) Decorator를 통해 기본 화면인 Display class를 꾸며준다 코드) https://github.com/kook1932/Computer-Science/tree/master/Design%20Pattern/Decorator%20Pattern 2019. 12. 27. Decorator Pattern 1. 정의 1) 객체에 추가적인 책임(기능)을 동적으로 부여한다. 2) decorator는 서브클래싱(상속)을 사용하지 않아도 유연하고 융통성 있는 기능 확장을 가능하게 한다. 2. 문제 1) 조금씩 기능을 추가하기 위해 새로운 클래스를 생성하는 경우 상속으로 문제를 풀면 너무 많은 상속 관계가 발생할 수 있음. 2) 예를 들어 커피에 대해서 "휘핑", "사이즈 업", "샷 추가"라는 기능이 있을 때, 기능을 추가할 때마다 기능을 추가한 상속 클래스를 만들면 상속 관계가 너무 복잡해진다. 3. 해결방안 1) 상속을 사용하지 않고 연관으로 필요한 기능 추가 4. 사용 예제 1) 커피에 옵션을 추가하는 경우 2) 자바 I/O * ConcreteDecorator는 멤버로 Component 객체를 가지고 있어야.. 2019. 12. 27. Observer Pattern 과제 과제 : 옵저버 패턴을 이용해서 쓰레드에서 생성되는 소수를 두 개 옵저버 GUI 화면에 출력하는 프로그램을 작성 예) 실행 화면 설계) 소수를 생성하는 Prime Thread가 Subject 역할을 하고, TextFieldWindow, LabelWindow가 Observer 역할을 한다. 코드) https://github.com/kook1932/Computer-Science/tree/master/Design%20Pattern/Observer%20Pattern 2019. 12. 27. 이전 1 ··· 3 4 5 6 7 다음