본문 바로가기

자바 디자인 패턴6

스테이트 패턴 State Pattern State는 상태라는 의미를 가지고 많이 쓰이는 단어입니다. 이처럼 상태에 따라 객체를 변환할 때 이용하는 패턴이 스테이트 패턴입니다. 1. 스테이트 패턴 스테이트 패턴은 객체 내부의 상태에 따라 동작을 변환할 때 이용하는 패턴입니다. 스테이트 패턴을 이용하면, 객체에 대해 여러 동작을 정의할 때 스테이트 객체만 수정, 추가하면 됩니다. 또한 스테이트 패턴을 사용하지 않을경우 조건문 등을 이용해서 동작을 제어해야하는데 스테이트 객체를 이용함으로써 클래스 코드가 간단해집니다. 단, 상태에 따라서 스테이트 객체가 증가하기 때문에, 동작이 많아질 경우 스테이트 객체가 늘어난다는 단점도 갖고 있습니다. 2. 스테이트 패턴 구현하기 오락실이나 뽑기 기계 근처에 가면 항상 동전 교환기계가 있습니다. 이 기계는 스테.. 2021. 9. 29.
어댑터 패턴 Adapter 패턴 다른 패턴 이름들과 다르게 어댑터라는 이름은 실생활에서도 많이 들어봤을 것입니다. 특히 110v 전압을 쓰는 나라에 여행을 가게 될 때는 우리가 110v어댑터라는 것을 껴서 우리가 사용하는 220v에서 전환을 합니다. 1. 어댑터 패턴 소개 서론에서 언급했듯이 보통 어댑터를 전압에 따라 교체합니다. 스마트폰 충전기도 태블릿이냐 노트북이냐에 따라서 20w 어댑터로 교체하고 50w 어댑터로 교체하기도 하고 하죠. 이처럼 어댑터를 우리 입맛에 맞춰서 바꿔서 이용합니다. 디자인 패턴의 어댑터 패턴도 사용자의 입맛에 맞춰서 쓸 수 있게 해줍니다. 어댑터 패턴은 인터페이스를 사용자가 원하는 기능에 맞도록 변화시켜주는 패턴입니다. 위의 예시에서 콘센트와 전자 제품은 객체고 어댑터가 인터페이스가 되는 것 입니다. 콘센.. 2021. 9. 19.
커맨드 패턴 Command Pattern 이번에 소개할 패턴인 커맨드 패턴은 특정 기능을 캡슐화 시키는 패턴입니다. 1. 커맨드 패턴 소개 커맨드 패턴은 서론에서 이야기 했듯이 특정 기능들을 캡슐화 시키는 패턴입니다. 그래서 보통 매개변수를 이용해서 기능에 다른 요구 사항들을 넣을 수 있게됩니다. 예를 들어 전원을 켜는 기능이 있다고 할 때, 매개변수로 티비냐 컴퓨터냐에 따라 같은 전원을 켜는 기능이라 하더라도 티비를 키거나 컴퓨터를 키는 등의 동작이 가능해집니다. 커맨드 패턴에서는 크게 Invoker(이하 인보커, 호출자), Receiver(이하 리시버, 수신자), Command(이하 커맨드, 명령) 객체로 구분됩니다. 인보커는 기능의 실행을 요청하고 리시버는 명령을 수행하는 객체입니다. 2. 커맨드 패턴 구현 2-1. 커맨드 객체 구현 커맨.. 2021. 9. 15.
싱글턴 패턴 Singleton Pattern 이번에 소개드릴 패턴은 싱글턴 패턴입니다. 1. 싱글턴 패턴 싱글턴 패턴은 이름에서 single;하나의 라는 의미가 들어가 있듯이 하나의 인스턴스 생성을 위한 패턴입니다. 즉, 단 한번의 객체 생성을 보장하는 패턴입니다. 처음들을때는 객체 생성을 단 한번만 한다니까 의미없고 이상해보입니다. 하지만 생각해보면 의외로 단 하나의 객체 생성만을 보장해야 하는 경우가 꽤 있습니다. 대표적으로 설정을 저장하는 객체가 있습니다. 설정은 사용자가 단 하나의 설정을 이용하죠. 만약에 설정이 여러개라면 설정끼리 충돌하는 상황이 발생하기 때문에 이런 설정 객체 같은 경우 단 하나의 인스턴스 생성을 보장해야합니다. 2. 싱글턴 패턴 구현 싱글턴 패턴은 여태까지의 패턴과는 다르게 구현 전에 잠시 생각해 봐야할 것들이 있습니다.. 2021. 9. 13.
팩토리 패턴 Factory Pattern 이번에 소개할 패턴은 팩토리 패턴입니다. 1. 들어가기전에 들어가기전에 new라는 키워드를 집고 넘어가려고 합니다. 갑자기 디자인 패턴하다가 new라는 키워드설명을 왜 하나요 싶겠지만, 팩토리 패턴과 밀접한 관련이 있습니다. 우리가 객체를 생성할때 보통 [객체 객체명 = new 객체생성자]와 같은 방식으로 new를 이용했습니다. 여기서 new라는 것은 생성자를 통해 객체의 인스턴스를 생성하는 것인데요. 이렇게 생성한다는 것은 구체적으로 작성된 클래스를 통해 구현을 한다는 의미입니다. 그래서 객체와 관련한 수정이 발생하면 일일히 관련 코드들을 고쳐야하기에 유지보수면에서 좋지 못한 모습을 보입니다. 그래서 우리는 new 대신에 다른 방식을 이용하는 것을 생각해야합니다.(당연히 무조건 new를 통한 객체 생성.. 2021. 9. 9.
데코레이터 패턴 Decorator Pattern 이번에 소개할 패턴은 데코레이터 패턴입니다. 데코레이터 패턴은 Structural Pattern에 속합니다. 1. 데코레이터 패턴 소개 어디선가 한 번쯤은 "데코레이션"이라는 말을 들어봤을 것입니다. 케이크 위에 과일이나 장식을 얹는 것, 음료에 가니쉬나 다양한 첨가물을 넣는 것들을 우리는 데코레이션 이라고 합니다. 이처럼 한 객체 위에 기능들을 입혀서 사용 목적에 걸맞는 객체로 만드는 것을 데코레이션 패턴이라고 합니다. 예를들면, 케이크 빵위에 생크림을 바르면 생크림 케이크, 초코를 바르면 초코 케이크가 되고, 같은 생크림 케이크 라도 과일을 올릴 수도 있고, 초코를 올릴 수도 있죠. 심지어는 같은 장식(기능)이라도 케이크 빵대신 베이글을 넣을 수도 있습니다. 이처럼 각기 다른 베이스를 가지고 장식을 .. 2021. 9. 2.
300x250