일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 디자인 패턴
- Double Checking Locking
- 데코레이터 패턴
- 엑셀
- Media
- Singleton
- 데이터
- 싱글턴
- 오피스
- 국제운전면허증
- penfield
- C
- 프록시
- r
- Decorator pattern
- Renderer
- Video
- 이클립스
- Design Pattern
- C++
- 통계
- WEB
- 엑셀 여러창 띄우기
- 데이터 마이닝
- Down
- stapleton
- 프로그래밍 언어
- proxy
- Today
- Total
목록Design Pattern (8)
Kaboom
■ 이터레이터 패턴 # 내부 데이터 컬렉션을 외부로 노출하지 않는다. # 대신 객체 내 원소 접근 방법을 제공한다. ■ 컴포지트 패턴 # Tree 구조 # 부분 - 전체의 계층구조 # 구성원에 대해 개별 객체/복합 객체에 대한 동일한 처리가 가능
# 어댑터 패턴 : 클래스의 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환한다. - 1. 클라이언트에서 타겟 인터페이스를 새로 정의, 사용하여 메소드를 호출하여 어댑터에 요청을 한다. - 2. 어댑터에서는 어댑티 인터페이스를 사용하여 그 요청을 어댑티에 대한 하나 이상의 메소드 호출로 변환한다. - 3. 클라이언트에서는 호출 결과를 알지만 중간의 어댑터가 끼여 있는지는 전혀 알지 못함. ......................
Lazy Instantiation : 싱글턴 객체를 필요한 상황이 닥치기 전에는 생성하지 않고 있게 됨. 싱글턴 패턴 : 해당 클래스의 인스턴스가 하나만 만들어지고, 어디에서든지 그 패턴에 접곤할 수 있기 휘한 패턴임. 멀티쓰레드에서 접근 가능하기 때문에 동기화된 상태로 유지해야 함. getinstance() 코드 블럭 전체를 동기화 시킬 때 발생하는 문제 - 불필요한 성능 저하 해결 방법 : 속도가 별 상관 없다면 그냥 둔다. 인스턴스 생성을 클래스 로딩 타임에 하도록 코드를 수정한다. Double-Checking Locking 사용 인스턴스가 NULL 일 때만 동기화 블록을 써서 생성하는 동안에만 적용 volatile keyword in JAVA : volatile는 각기 다른 thread가 같은 값..
# 정확하게는 디자인 패턴이라고 말할 수 없음. 디자인 패턴이라기 보다 관용구에 가까움. # 팩토리를 쓰면 객체 생성 과정을 캡슐화 할 수 있다.# static factory를 쓰는 경우 객체 생성 과정을 위한 팩토리의 인스턴스를 만들지 않아도 되는 장점이 있지만, 서브클래스를 만들어 객체 생성 메소드의 동작을 변경시킬 수 없는 단점이 있다.# 모든 팩토리 패턴에서는 어플리케이션의 구상 클래스에 대한 의존성을 줄여줌으로서 느슨한 결합을 도와준다.# 팩토리 메소드 패턴에서는 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정하게 만든다. # Dependency Inversion Principle : # 원칙에 대한 가이드라인 :- 어떤 변수에도 구상 클래스에..
# 디자인 원칙 : 클래스는 확장에 대해서는 열려있어야 하나 코드 변경에 대해서는 닫혀있어야 한다. (기존 코드는 변경하면 안됨) # 데코레이터 패턴은 객체에 추가적인 요건을 동적으로 첨가한다. 데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다. # 구성 요소는 다음과 같다 : 추상 구성요소, 구상 구성요소, 추상 데코레이터, 구상 데코레이터 # 데코레이터의 수퍼클래스는 데코레이터가 장식(데코레이트)하는 객체의 수퍼클레스와 같은 것을 써야 한다. 예) Abstract Class Object, (추상 구성요소) Abstract Class Decorator extends Object (추상 데코레이터) Class RealObject extends Object, (구..
# 각 객체들 사이에 1-N 관계를 형성한다 # 한 객체의 상태가 바뀌면, 그 객체에 의존하는 다른 객체들에게 연락이 가고, 이에 따라 자동으로 내용이 갱신된다. # Observable ----> Observer(Interface) ----> Observer(Interface) ....... # Push 방식과 Pull 방식 : Pull 방식의 경우, Data가 바뀌어 알림이 발생해도 특정 조건에서만 갱신된 데이터를 Observable에서 가져온다. Pull 방식이 더 유연 # Java의 Observable 클래스는 Java의 다중 상속 불가 원칙으로 활용도가 떨어짐. SetChanged() 메서드도 Protected로 정의되어 있기 때문에, 구성을 통해 적용하기에도 힘듦. # 옵져버 패턴은 기본적으로 ..
# 객체지향의 기초 : 추상화, 캡슐화, 다형성, 상속 # 객체지향의 원칙 : - 바뀌는 부분은 캡슐화 한다. - 상속보다는 구성을 활용한다. - 구현이 아닌 인터페이스 맞춰 프로그래밍 한다. - 서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게(Loosely Coupled)결합하는 디자인을 사용해야 한다. # Strategy Pattern : 알고리즘군을 정의하고, 이 각각의 군들을 캡슐화 하여 바꿔쓸 수 있게 한다. 이를 이용하면 알고리즘을 활용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있다. # 훌륭한 객체지향 디자인 : 재사용성, 확장성, 관리의 용이성 # 패턴 : 검증받은 객체지향 경험의 산물, 시스템의 일부분을 나머지 부분과 무관하게 변경하는 방법을 제공, 다른 개발자들과 의사소통..
■ 약결합 시스템(Loosely Coupled System) - 각 프로세스마다 독립된 메모리를 각지 시스템으로, 분산처리 시스템이라고도 한다. - 둘 이상의 독립된 컴퓨터 시스템을 통신망(통신 링크)을 통하여 연결한 시스템이다. - 각 시스템마다 독자적인 운영체제를 가지고 있다. - 각 시스템은 독립적으로 작동할 수 있고, 필요한 경우에는 상호 통신을 할 수도 있다. - 프로세스 간의 통신은 메시지 전달이나 원격 프로시저 호출을 통해서 이루어 진다. - 각 시스템마다 독자적인 운영이 가능하므로 프로세서 간이 결합력이 약하다. ■ 강결합 시스템(Tightly Coupled System) - 동일 운영체제 하에서 여러 개의 프로세스가 하나의 메모리를 공유하여 사용하는 시스템으로 다중(병렬)처리 시스템이라고..