backup/design pattern
-
9. Proxy Patternbackup/design pattern 2012. 1. 3. 16:54
# Proxy Pattern 어떤 객체에 대한 접근을 제어하기 위한 용도로 대리인이나 대변인에 해당하는 객체를 제공하는 패턴 ## 원격 프록시 - 원격 객체에 대한 접근을 제어 ## 가상 프록시 - 생성하기 힘든 자원에 대한 접근을 제어 ## 보호 프록시 - 접근 권한이 필요한 자원에 대한 접근을 제어 ## 방화벽 프록시 - 일련의 네트워크 자원에 대한 접근을 제어 ## 스마트 레퍼런스 프록시 - 주 객체가 참조될 때마다 추가 행동을 제공 ## 캐싱 프록시 - 비용이 많이 드는 작업의 결과를 임시로 저장. 여러 클라이언트에서 결과를 공유하게 해 줌으로써 계산 시간 또는 네트워크 지연을 주여주는 효과 ## 동기화 프록시 - 여러 스레드에서 주 객체에 접근하는 경우에 안전하게 작업을 처리 ## 복잡도 숨김 ..
-
8. State Patternbackup/design pattern 2011. 12. 30. 16:28
# Satate Pattern 스테이트 패턴을 이용하면 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 마꿀 수 있다. 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있다. ## 스테이트 패턴 vs 스트래티지 패턴 스테이트 패턴을 사용할 때는 상태 객체의 일련의 행동이 캡슐화 된다. 상황에 따라 Context 객체에서 여러 상태 객체 중 한 객체에게 모든 행동을 맡기게 된다. 그 객체의 내부 상태에 따라 현재 상태를 나타내는 객체가 바뀌게 되고, 그 결과로 컨텍스트 객체의 행동도 자연스럽게 바뀌게 된다. 스트래티지 팬턴을 사용할 때는 일반적으로 클라이언트에서 컨텍스트 객체한테 어떤 전략 객체를 사용할지를 지정해 준다. 스트래티지 패턴은 주로 실행시에 전략 객체를 벼경할 수 있는 유연성을 제공하기..
-
6. Iterator Patternbackup/design pattern 2011. 12. 22. 13:45
# Iterator Pattern 이터레이터 패턴은 컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 수 있게 해 주는 방법을 제공해 줍니다. ## 단일 역할 원칙 클래스를 바꾸는 이유는 한 가지 뿐이어야 한다. ## 응집도 한 클래스 또는 모듈이 특정 목적 또는 역할을 얼마나 일관되게 지원하는지를 나타내는 척도라고 할 수있다. 어떤 모듈 또는 클래스의 응집도가 높다는 것은 일련의 서로 연과된 기능이 묶여있다는 것을, 응집도가 낮다는 것은 서로 상관없는 기능들이 묶여있다는 것을 뜻합니다.
-
5. Template Method Patternbackup/design pattern 2011. 12. 20. 15:09
# Template Method Pattern 템플릿 메소드 패턴에서는 메소드에서 알고리즘의 골격을 정의한다. 알고리즘의 여러 단계 중 일부는 서브클래스에서 구현할 수 있다. 템플릿 메소드를 이용하면 알고리즘의 구조는 그대로 유지하면서 서브클래스에서 특정 단계를 재정의할 수 있다. 후크(hook) 추상 클래스에 들어있는, 아무 일도 하지 않거나 기본 행동을 정의하는 메소드로, 서브클래스에서 오버라이드 할 수 있다. ## 헐리우드 원칙 먼저 연락하지 마세요. 저희가 연락 드리겠습니다. 의존성 부패 방지, 저수준 구성요소에서 시스템에 접속을 할 수는 있지만, 언제 어떤 식으로 그 구성요소들을 사용할지는 고수준 구성요소에서 결정하게 된다.
-
4. Adapter & Facade Patternbackup/design pattern 2011. 12. 19. 15:06
# Adapter Pattern 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환한다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. # Facade Pattern 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공한다. 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있다. ## 최소 지식 원칙(Principle of Least Knowledge) == 데메테르 법칙(Law of Demeter) 정말 친한 친구하고만 얘기하라.(정말 관련 된 최소 객체들과만 상호작용하라) 객체들 사이의 의존성을 줄이고, 소프트웨어 관리가 용이하지만 구성요소에 대한 메소드 호출을 처리하기 위해 ..
-
3. Command Patternbackup/design pattern 2011. 12. 12. 14:39
# Command Pattern 커맨드 패턴을 이용하면 요구 사항을 객체로 캡슐화 할 수 있으며, 매개변수를 써서 여러 가지 다른 요구 사항을 집어넣을 수도 있다. 또한 요청 내역을 큐에 저장하거나 로그로 기록할 수도 있으며, 작업취소 기능도 지원 가능하다. # 딱히 리턴할 객체는 없지만 클라이언트 쪽에서 null을 처리하지 않아도 되도록 하고 싶을 때 널 객체를 활용하면 좋다. null : 무효의, 무익한, 중요하지 않은, 무의미의, 빈
-
3. Singleton Patternbackup/design pattern 2011. 12. 1. 17:42
# singleton pattern 싱글턴 패턴은 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 그 인스턴스에 접근할 수 있도록 하기 위한 패턴이다. 멀티스레스에서 1. 메서드를 동기화 - 성능에 크게 문제가 되지 않는다면(메소드 동기화는 성능 100배 정도 저하) 2. 인스턴스를 처음부터 생성 - 리소스가 문제 되지 않는다면 3. DCL(Double-Checking Locking) 사용. ## DCL에서의 volatile에 관해서...(어렵다...) http://cafe.naver.com/avrst.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=149 http://mkseo.pe.kr/blog/?p=475 http://blog.kangwoo.kr/43 ### ..