디자인 패턴 DesignPattern3 스테이트 패턴(State Pattern) 목적: 객체의 내부 상태가 바뀔 때 객체의 동작을 변경할 수 있도록 함. 객체는 자신의 클래스를 바꾸는 것처럼 보임 State(상태) : 시점에 따라 특정 상태에 있어야함. 처음에 가지게 되는 초기상태 (state)또는 상황에 따라 여러 상태 가운데한 상태를 가질 수 있음. Transition(전이) : 외부 입력에 따라 가능한 상태로 전환 상태(state)가 여러 개 있고 , if 문으로 상태를 통제했던 것을 상태를 한 곳에서 관리하고 변경을 최소화 할 수 있도록 한다. 상태표시를 정수로 하던 것을 상태 객체를 사용하는 것으로 변경한다. 상태를 별도의 클래스로 캡슐화 한 다음, 현재 상태를 나타내는 객체에게 행동을 위임한다. 2020. 12. 8. Template Method Pattern : 템플릿 메소드 패턴 상속받은 클래스에서 달라지는 부분을 자식에게 위임시킨다. 스트레티지 패턴이랑 비슷하며 알고리즘의 뼈대를 정의하고, 일부를 서브 클래스로 위임한다. 템플릿 메소드는 알고리즘의 구조를 변경하지 않고 알고리즘의 일부 내용을 서브 클래스에서 재정의 할 수 있도록 한다. 즉 알고리즘 과정의 일부를 정의하고 일부를 서브클래스로 위임하는 것이다. 틀의 일부를 타 사용자들이 고쳐쓸 수 있도록 하며 Framework 에서 많이 쓰는 패턴이다. 기존의 문제점은 알고리즘들을 캡슐화 시키면서 중복되는 코드가 여러 클래스에 존재한다는 것이었다. (같은 알고리즘 코드가 여러군데에 있을 때) 해결방안은 알고리즘의 중복되는 부분을 부모 클래스에 추상화 시키고 달라지는 부분만 서브 클래스에서 구현하는 것이다. 부모를 추상화 하고 , .. 2020. 11. 25. 07.Singleton Pattern 1. 싱글턴 패턴의 목적 클래스가 한 개의 인스턴스만을 만들 수 있도록 하고, 다른 곳에서 그 생성된 한개의 인스턴스에 접근할 수 있도록 한다. 2. 고전적 싱글턴 패턴의 구현 방법 private 디폴트 생성자 구현 싱글턴 인스턴스를 저장하는 정적 멤버 변수(static 변수) 생성 싱글턴 인스턴스를 반환하는 정적 팩토리 메소드(static 메소드) 구현 (그러나 멀티 스레드를 사용하는 프로그램에서는 이게 문제가 될 수 있다.) 즉 A a = new A(); 같은 형식으로 객체를 생성하지 않게 할 것이라는 뜻이다. 여기서는 한개의 인스턴스만을 만드는 것이 목적이기 때문이다. 그러므로 private 디폴트 생성자를 막아둔다. 정적 메소드(static 메소드)에는 객체를 생성하지 않아도 사용할 수 있는 메소.. 2020. 10. 14. 이전 1 다음