해당 글은 https://refactoring.guru/design-patterns/catalog 을 참고하여 작성하였습니다.
해당 인스턴스에 글로벌로 접근이 가능하면서 클래스가 오직 하나의 인스턴스만을 가지도록 설계하는 방법
문제점 및 해결방안
Source : https://refactoring.guru/design-patterns/singleton
집을 만든다고 했을 때 해당 집에 창문이 있는지, 문이 있는지, 방이 있는지, 차고가 있는지, ... 등과 같은 정보들을 파라미터로 받는다.
해당 객체에 창문을 추가하고, 문을 추가하고, 방을 추가하고, 차고는 추가하지 않는 방식으로 객체를 생성하는 방법이다.
문제점 및 해결방안
대부분의 경우에 여러 파라미터들은 사용되지 않는다.(가독성 저하)
정원이 없고, 수영장이 없고, 창고가 없는 집을 만든다고 했을 때 해당 파라미터들은 사용되지 않는다.
=> 해당 객체의 생성자 코드를 클래스 밖으로 빼온 뒤 분리된 객체를 만든다
Source : https://refactoring.guru/design-patterns/builder
이미 만들어진 객체의 클래스와 독립적으로 해당 객체를 복사하는 방법
문제점 및 해결방안
Source : https://refactoring.guru/design-patterns/prototype
추상화를 통해 연관된 클래스들을 특정화 하지 않고 만드는 방법
문제점 및 해결방안
Source : https://refactoring.guru/design-patterns/abstract-factory
객체를 생성하기 위해 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지는 서브클래스가 결정하게 하는 방법
문제점 및 해결방안
Source : https://refactoring.guru/design-patterns/factory-method