목록공부/디자인패턴 (4)
빠에야는 개발중
어떤 클래스의 객체를 생성하여 초기화를 해주고 싶다.1234567891011121314151617181920212223242526272829303132333435363738394041public class PersonInfo { private String name; private Integer age; private String favoriteColor; private String favoriteAnimal; private Integer favoriteNumber; public PersonInfo(String name, Integer age, String favoriteColor, String favoriteAnimal, Integer favoriteNumber){ this.name = name; thi..
싱글톤을 사용하는 이유 싱글톤 패턴은 인스턴스를 어플리케이션 내에서 단 한번 생성하여 계속 사용하는 패턴이다.(동일한 객체) 이렇게 하면 우선 메모리를 아낄 수 있고, 전역 객체인 싱글톤 객체를 여러 메소드에서 공유 자원으로 사용하도록 할 수도 있다. 이는 주로 DBCP 같은 공통된 객체를 여러개 사용해야하는 상황에서 많이 사용한다. 문제점 싱글톤을 과도하게 사용하면 다른 인스턴스 간의 결합도가 높아져 OCP를 위반할 가능성이 있다. 이에 따라 수정 하기도 어렵고, 테스트도 어려워진다.멀티 쓰레드 환경에서 동기화 처리를 제대로 해주지 않으면 여러개의 인스턴스가 생기는 등의 문제가 발생할 수 있다.그래서 꼭 필요한 경우가 아니라면 사용을 지양하는 것이 좋다. (아니면 시스템에 맡겨버리던가) 싱글톤을 구현하..
템플릿 메소드 패턴이란 같은 이름의 추상 메소드를 다른 클래스에서 상속받아 각자 다르게 구현하는 패턴이다. 즉 상위 클래스에서 메소드의 "틀"을 제공하는 것인데, 그야말로 추상화 자체라고 할 수 있겠다. 아래의 코드에서 여러 교복 회사들이 같은 상위 클래스 UniformFactory를 상속하여 같은 이름의 메소드 makeUniform()을 사용하지만 그 구현 내용은 각자 다르다.1234567891011121314151617181920212223242526public abstract class UniformFactory { public void makeUniform() { button(); } abstract void button();} public class Smart extends UniformFact..
팩토리 메소드 패턴이란, “어떤 인스턴스의 생성을 하위 클래스에서 담당하도록 하는 패턴”이다. 팩토리 메소드 패턴을 사용하면 조건에 따라 다른 종류의 구상 인스턴스를 생성해줄 수 있기 때문에 추상화의 효과를 볼 수 있다. 더불어 팩토리 메소드에 static을 사용하면 인스턴스를 싱글톤으로 관리할 수도 있다. 예를 들어 다음 코드를 보자. 치킨 가게에서 여러 종류의 치킨을 판매하고 싶다. 그런데 들어가는 재료의 차이를 빼고는 모든 공정이 동일하다. 그렇다면 각각의 메뉴별로 하위 클래스를 만들어줘서 그 속에서 인스턴스를 생성하면 추가되는 작업들은 팩토리 메소드만 수정할 뿐 다른 공통의 작업들은 수정할 필요가 없어진다(OCP). 또한 각각의 메소드들을 분리하였고 객체를 생성하는 메소드도 따로 존재하기 때문에 ..