본문 바로가기

디자인 패턴

(4)
[디자인 패턴] 빌더 패턴(Builder pattern) 문제점 Class를 정의하고 각 상황에 필요한 변수를 넣어 생성자를 생성하게 되거나 기본생성자로 인스턴스 생성 후 setter로 변수에 값을 주게 되면 관리가 힘들어진다. public class Person { private String name; private String nickname; private int age; private int height; private int weight; public Person(){} public Person(String name, int age, int height, int weight){ this.name = name; this.age = age; this.height = height; this.weight = weight; } public Person(Stri..
[디자인 패턴] 템플릿 메서드 패턴(Template Method Pattern) 템플릿 메서드 패턴 비슷한 종류의 클래스를 하나의 슈퍼클래스를 상속받는 형식으로 구현해 기능을 확장하는 방법 공통된 기능은 슈퍼클래스내에 Hook method로 구현하여 중복 코드를 제거한다. 구현 public class Dog { public void run(){ System.out.println("달린다"); } public void bark(){ System.out.println("멍멍"); } } public class Cat { public void run(){ System.out.println("달린다"); } public void bark(){ System.out.println("야옹"); } } 이 두가지 클래스에서 run 함수는 같은 기능을 하고 있고 bark 부분만 다른 기능을 가진다...
[디자인 패턴] 팩토리 메서드 패턴(Factory Method Pattern) 기존에 프로젝트 DB로 MySQL을 채택한 상황에서 MSSQL을 사용해야 될 때는 어떻게 해야 할까? 확장성을 고려하지 않고 그저 기능 구현에만 집중한 코드를 사용했을 경우 전체적으로 코드를 수정해야 한다. 이러한 경우 개방 폐쇄 원칙에 위배가 되므로 처음 코드를 구현할 때 확장성에 대해 잘 계획하여야 한다. 팩토리 메서드 패턴 객체 구현을 담당하는 클래스를 따로 두어 결합도를 낮추는 방법이다. 구현 아래 코드는 간단한 예제를 보여주기 위한 코드로 실제 작동은 되지 않는다. public interface ConnectorFactory{ public Connection connect(); } ConnectorFactory는 Creator로 볼 수 있고 User는 interface의 매개변수와 함수 이름을 ..
[디자인 패턴] 싱글톤 패턴(Singleton pattern) 싱글톤 패턴 하나의 인스턴스만 생성하여 여러 객체가 한 인스턴스에만 접근이 가능하게 만든 패턴이다. 유니티로 메타버스 개발시 캐릭터가 맵을 이동할 때 마다 새로운 캐릭터 인스턴스가 생성되어 맵 이동시마다 캐릭터의 수가 두배가 되었는데 이를 싱글톤 패턴을 사용하여 해결했던 경험이 있다. 이뿐만 아니라 여러 곳에서 하나의 자원을 공유해야 하는 상황에서 싱글톤 패턴을 자주 사용한다. (캐시, 커넥션풀, 스레드풀 등) 구현 public class Singleton { private static Singleton instance = new Singleton(); private Singleton(){} // 기본 생성자를 private로 선언해서 새로운 인스턴스가 생성되지 못하게 한다. public static S..