cs/디자인 패턴(20)
-
[디자인 패턴] Mediator Pattern
Mediator Pattern Mediator를 영어로는 중개자라는 뜻이다. 객체사이의 복잡한 통신들을 중지시키고 Mediator에게 중재를 시켜 처리를 정리합니다. 특히 GUI 프로그래밍에 자주 쓰입니다. 사용될 상황 1. 객체들 끼리 통신은 잘되지만 복잡한 방법으로 될때2. 객체를 재사용하는 것은 다른 많은 객체들끼리 연관되어 있기 때문에 어려울 때 3. 객체의 동작들이 분산되어서 사용하기 어려울 때. 파일 구조 UML Mediator.javapublic interface Mediator{ public abstract void publishMessage(User sender, String message, User receiver); public abstract void addUser(User rece..
2019.02.13 -
[디자인 패턴] Command Pattern
Command Pattern 명령을 명세하고 있는 클래스를 만들어 호출될 때 마다 명령을 기록해두었다가 재사용하기도 하고 관리하고 싶을 때 사용하면 되는 패턴입니다. 흔히 이벤트를 자주 사용하는 GUI, app에 사용되기도 합니다. 파일 구조 UML Command.javapackage command; public interface Command{ public abstract void execute(); }어떤 클래스가 Command Interface를 구현하여 실행하냐에 따라 다르지만 execute는 무언가를 실행하는 메소드입니다. MacroCommand.javapackage command; import java.util.Stack; import java.util.Iterator; public class..
2019.02.08 -
[디자인 패턴] Proxy Pattern
Proxy Pattern Proxy Pattern은 하나의 객체에게 모든일을 맡기는 것이 아니라 대리인을 만듭니다. 대리인이 처리할 수 있는 일은 대리인이 처리하게 만들고 그 이외의 일들은 자기가 처리하게 만들어줍니다. 그래서 주인의 과부화를 막아주는 역활을 합니다. 특이점 Proxy 패턴을 사용해서 속도 올리기 이번에 사용할 예제는 간단한 프로그램이기 때문에 크게 작용하진 않지만 초기화에 큰 시간이 드는 프로그램에서는 Proxy Pattern에서는 크게 적용할 것입니다. Proxy의 다양한 종류 Http Proxy 웹서버와 클라이언트 사이에 웹페이지의 캐싱을 실행하는 소프트웨어 입니다. 페이지의 캐싱 웹브라우저가 하나하나 웹서버에 접속하여 페이지를 취득하는게 아니라 Proxy가 캐쉬해서 어떤 페이지를 ..
2019.02.05 -
[디자인 패턴]FlyWeight 패턴(플라이웨이트 패턴)
FlyWeight 패턴 FlyWeight 패턴은 이름 그대로 더 가볍게 프로그래밍을 할 수 없을까 해서 만들어진 패턴이다. new를 통해 객체를 한번만 만들고 필요할 때 마다 사전에 만들어진 객체를 공유하여 제공하는 방법입니다. 주의할 점 특정한 객체를(새 객체가 아니라 공유된 객체) 바꾸어주면 여러 장소에 영향을 미칠 수 있습니다. 그러니 이부분을 고려하여 코드를 작성해야할 것 같습니다. UML BigChar.javaimport java.io.*; public class BigChar{ private String fontdata; public BigChar(char charname){ try{ BufferedReader reader = new BufferedReader( new FileReader("b..
2019.01.31 -
[디자인 패턴] Facade Pattern
Facade Pattern Facade는 복잡한 클래스와 메소드로 만들어진 기능을 사용자에게 간단하게 보여지고 사용할 수 있게 만들어 주는 것입니다. 프로그램이 커지면서 클래스와 메소드가 많아 지고 연관성이 많아지면서 프로그램이 복잡해집니다. 이와 같은 경우에 클래스간의 관계를 정확히 이해하고 순서에 맞게 메소드를 호출할 수 있어야합니다. 그래서 하나의 창구를 만들어서 내부는 복잡하게 만들어 져있지만 사용자입장에서는 로우한 api를 보는 듯 하게 만들어줍니다. 한마디로 Facade는 복잡한 클래스와 메소드로 만들어진 기능을 사용자에게 간단하게 보여지고 사용할 수 있게 만들어 주는 것입니다. 그래서 인터페이스의 수가 적어지고 이는 외부와의 결합이 얕아진 다는 것을 의미합니다. 파일 구조 클래스 다이어그램 ..
2019.01.29 -
[디자인 패턴] Chain of Responisibility
Chain of Responsibility 일명 한국어로 책임 떠넘기 일상생활에서 가끔 이랬던적이 있다. 나도 갤럭시 노트8 올림픽 에디션을 공짜로 받은 후 바로 사용하려고 했는데 락이라는 것이 걸려있었다. 그래서 처음에 kt에 갔다가 거절당하고 samsung으로 갔다가 kt가라고 해서 kt가고 서로 떠넘겼다. 나중에는 여러번 반복 후 kt 플라자가서 사용할 수 있게 되었다. 이런 것과 비슷한 역활을 하는 패턴인 것 같다. 공부하기전 상상을 해보면 특정 요청을 수행하는 곳을 찾아서 찾아서 맞는 곳에 도착했을 때 기능을 수행하는 약간 그런 식으로 상상이 된다. 책을 쭉 읽어 보니 비슷한 것 같습니다. 더 자세히 읽어 보면 다수의 오브젝트를 체인 처럼 연결할 후 그 오브젝트의 사슬을 차례로 돌아다니면서 목적..
2019.01.25