본문 바로가기

뇌세포덩어리""/리팩토링&객체지향

디자인패턴

1. 싱글톤 : 객체 하나를 통한 이벤트 

                - 클래식싱글톤 : 상속을 해도 오직 상위객체의 데이터/함수만 사용가능

                - borg 싱글톤 : 상속을 해서 하위단의 데이터를 사용가능/함수만 상위단의 것을 사용

 

2. 팩토리 : 변수에 따른 객체를 리턴

                - 여러개의 공통된 클래스의 집합을 통해 하나의 클래스에서 변수를 통해 해당 클래스를 리턴 

                - 사용자는 상위단을 알 필요 없이 선택에 따라 객체를 받을수 있음

                                         - ex : Connect() ------> httpConnect()

                                                                   |

                                                                   ------->ftpConnect()

                                           - 사용자의 입력에 따라 http or ftp 객체를 리턴 

                    - 상위단에서는 하위단에서 구현되여야 할 함수를 선언(abstract)

 

3. 파사드 : 인터페이스를 통해 사용자의 편의성 제공 목적

                 - 사용자가 인터페이스를 통해 원하는 액션을 받을수 있도록 하나의 인터페이스로 여러개의 클래스를 집약시킴

                 - 팩토리와 다른점은 팩토리는 사용자의 선택에 따라 객체를 선택해서 받음, 파사드는 오직 하나의 동작만을 수행하지만 인터페이스를 통한 간소화가 목적

 

4. 프록시 : 다른 객체의 기능을 확장할때 사용 (중간에서 어떠한 행위를 할때 사용)

               - 보안상의 필요성을 위해 몇몇의 변수/함수만을 허락할때 

               - subject의 모든 호출 및 파라미터를 기록할때 

               - 값을 반환하기 전에 임시로 저장하기 위해 

               - 객체에 대한 참조를 세기 위해 

                - ex :                                       client --------------------->   proxy   ------------------->    subject(interface)

                                                                                                                      |                                                       ^

                                                                                                                     %                                                      |

                                                                                                                  realSubject--------------------------| 

                    - realSubject에 모든 구현이 되어 있지만 client는 proxy를 통해 사용

                   -  proxy에서 중간에서 수행할 기능 구현 

 

5. 옵저버 : 일대다 관계 ( 다수의 상태를 바꿔야 할때 )의 객체간 의존성을 낮출 때 

                - 모든 사용자들에게 알림요청

                - 특정 상태를 다수의 객체에 전달할때