Giter Site home page Giter Site logo

design-pattern-1's Introduction

design-pattern

It is design pattern for java.

    chap1. Iterator pattern

    예시로 Arts, Science과목을 사용한다. Arts는 LinkedList를 사용하나, Science는 Array를 사용한다.
    다른 집합체를 사용하지만 모든 항목에 접근하는 방식이 통일되어 있으며 어떤 종류의 집합체에 대해서도 사용할 수 있게 된다.
    이 패턴의 장점은 하나를 수정할 때 수정해야 할 부분이 적다. 즉, 변경의 최소화이다.

    chap2. Adapter pattern

    예시로 사각형의 넓이를 구해주는 메소드가 있다. 하지만 삼각형의 넓이를 구하길 원하여 이 패턴을 사용했다.
    이와 같이 기존의 있던 것이 내가 원하는 것과 맞지 않을 경우 내가 원하는 기능으로 바꿔주는 역할을 한다.
    이 패턴의 장점은 관계가 없는 인터페이스 간 같이 사용이 가능하며, 프로그램 검사에 용이하고 클래스의 재활용성이 증가한다.

    chap3. Template Method pattern

    예시로 모든 학과의 학생들이 동일한 수업을 들어야하는것도 있지만 각 학과별로 다른 과목도 존재한다. 이 때 같은 과목들은 하나의 클래스로 구현하고 다른 과목은 이 클래스의 추상메소드를 구체화하면서 구현하도록 한다.
    전체적으로 동일하면서 부분적으로는 다른 구문으로 구성된 메소드의 코드 중복을 최소화할 때 유용.
    또한 공통으로 사용되는 코드를 한곳에 집중함으로써 로직을 공통화 할 수 있다.

    chap4. Factory pattern

    예시로 동물의 울음소리를 출력하려고 한다. 그 중 Duck, Tiger는 등록이 되어있으나 Lion은 등록이 되어있지 않다. 그때 새로운 동물을 출력하고자 할때, 이 패턴을 사용한다.
    이 패턴은 new키워드를 호출하는 부분을 서브 클래스에게 위임하여 사용한다. 이를 사용함으로써 객체 생성을 캡슐화 할 수 있다..
    바뀔수 있는 부분과 바뀌지 않는 부분을 분리시킴으로써 수정이 용이하다.

    chap5. Singleton pattern

    팀의 주장은 한명이고 주장이 꼭 있어야한다는 것을 예시로 들었다. 팀장을 뽑는 과정을 Singleton패턴을 사용했다.
    인스턴스는 하나만 생성이 가능하므로, 두개의 인스턴스를 생성해서 같은 주소값을 갖는지 확인한다.
    이는 제한된 자원에서 하나의 자우너으로 모두가 공유해서 사용해야하는 경우에 유용하다.
    하지만 너무 많이 사용할 경우 결합도가 높아지게 되고, 이를 통해 '개방-폐쇄'원칙을 위배하게 된다. 이 때문에 수정과 테스트가 어려워지게될 수 있다.

    chap6. Prototype pattern

    자동차에 맞는 가격을 측정하고, 그 가격과 차의 이름을 추쳘해주는 것을 예시로 들었다. 차가 들어오면 차에 대한 객체를 복제하는데 Protortype패턴을 사용했다.
    이 패턴은 새로 만들 인스턴스가 기존의 인스턴스와 같은 형태를 보일 때 사용한다. 만약 이 패턴을 사용하지 않고 복제하려면 인스턴스 생성후, 모든 필드 값을 복제해야하는 번거로움이 존재한다. 생성될 인스턴스들의 자료형인 클래스들이 모두 clone 메서드를 구현해야 한다는 단점이 존재한다.

    chap7. Builder pattern

    car, motorcycle을 만들어서 그에 해당하는 부품을 추가하는 것을 예시로 들었다.. car와 motorcyle을 생성하는데 Builder 패턴을 사용했다.
    이 패턴은 객체를 표현하는 방법과 생성하는 방법을 분리하며, 인스턴스를 생성할 때 생성자만을 통해서 생성하기 어려울 때 이 패턴을 사용한다. 또한 이 패턴을 사용하면 가독성이 뛰어나며 표현과 구성 부분을 분리함으로써 서로간의 독립성이 생긴다. 하지만 객체 생성을 추가하는 것은 쉬우나 객체를 구성하는 각 부분들을 새롭게 추가하는 것은 어렵다.

design-pattern-1's People

Contributors

xdfc1745 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.