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. 옵저버 : 일대다 관계 ( 다수의 상태를 바꿔야 할때 )의 객체간 의존성을 낮출 때
- 모든 사용자들에게 알림요청
- 특정 상태를 다수의 객체에 전달할때
'뇌세포덩어리"" > 리팩토링&객체지향' 카테고리의 다른 글
github actions radon / lint / pytest (0) | 2022.03.19 |
---|---|
sonarQube 정적 코드 분석 (기초편) (0) | 2019.05.26 |