분류 전체보기(472)
-
[디자인 패턴] 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 -
[디자인 패턴] Visitor Pattern
Visitor Pattern 우리가 일반적으로 데이터의 정의를 하고 처리를 해줄 때 일반적으로는 데이터가 명시되어있는 곳에 처리 해줍니다. 만약 데이터의 종류가 여러 개라면 데이터 구조의 클래스를 수정해야 합니다. Visitor Pattern은 위와 같은 상황에서 data의 명시와 처리하는 과정을 분리합니다. 그리고 방문자를 만들어서 데이터의 처리를 위임합니다. 이렇게 따로 분리를 해준다면 데이터의 구조를 건드리지 않고도 새로운 동작을 추가할 수 있습니다. 이전의 Composite Pattern의 예제를 빌려와서 사용해보겠습니다. Visitor.javapublic abstract class Visitor{ public abstract void visit(File file); public abstract ..
2019.01.22 -
[디자인 패턴] Decorate Pattern
Decorater Pattern 노트북을 살때 파우치를 사고 케이스를 사고 필름사면서 노트북을 꾸며 주듯이 객체를 만들 때 객체에 기능을 더해가는 패턴을 Decorater Pattern입니다. 객체를 생성할 때 기능을 추가하는데 특화된 패턴입니다. 일단 예제 코드를 작성해보겠습니다. Display.java public abstract class Display{ public abstract int getRows(); public abstract int getColumns(); public abstract String getRowText(int line); public void show(){ for(int i=0; i < getRows(); i++) System.out.println(getRowText(i)..
2019.01.22 -
[디자인 패턴]Composite Pattern
Composite Pattern Composite Pattern은 단일 객체와 복합객체를 동일하게 처리하기 편하게 만들어줍니다.그리고 동일한 객체를 반복해서 처리하는 과정에서 재귀적인 구조를 만드는데 도움을 주는 패턴입니다. 이번 예제코드에서는 폴더와 파일 디렉토리 구조를 만드는 예제를 만들어 보겠습니다. 파일과, 폴더를 함께말해서 Entry라고 말하겠습니다. Entry.java public abstract class Entry{ public abstract String getName(); public abstract int getSize(); public void printLine(){ printLine(""); } public abstract void printLine(String prefix); p..
2019.01.20 -
[디자인 패턴]Strategy 패턴
Strategy패턴 스타크래프라는 게임을 보면 다양한 전술이 있다. 그리고 상대가 어떻게 행동 하느냐에 맞추어서 전술을 바꿔가면서 플레이 한다. Startegy패턴은 특정 알고리즘, 특정 로직등을 위임하여 통째로 바꾸기 쉽게 만들어주는 패턴입니다. 저는 이번 예제에서 2개의 sortMachine을 만들고 한 곳은 quick 다른 한 곳은 merge를 사용하는 sort Machine을 만들어보겠습니다. 파일 구조 SortStrategy public interface SortStrategy { public void sort(int[] arr); } //전략 인터페이스를 만듭니다. 이를 구현해주는 Quick과 Merge를 아래와 같이 만듭니다. QuickSortpublic class QuickSort impl..
2019.01.19