Home
Appchemist
Cancel

ThreadLocal

스레드 내보의 값과 값을 가지고 있는 객체를 연결해 스레드 한정 기법을 적용할수 있도록 도와주는 형식적인 방법으로 ThreadLocal이 있다. 이 ThreadLocal은 호출하는 스레드마다 다른 값을 사용할 수 있도록 관리해준다. 즉, ThreadLocal의 get 메소드를 호출하면 현재 실행 중인 스레드에서 최근에 set 메소드로 저장했던 값을 가...

병렬프로그램) Stale Data

단일 스레드를 사용하는 환경에서 특정 변수를 저장하고,그 값을 읽으면 이전에 저장 했던 값을 가지고올수 있다. 하지만, 여러 스레드가 작동하는 환경에서는 변수에 값을 저장하고 읽어 오는 코드가 여러 스레드에 의해서 실행이 된다면 상황은 다르다. public class NoVisibility { private static boolean read...

Memento Pattern

Memento Pattern 은 객체의 이전 상태를 저장하기 위한 패턴이다. 객체의 상태를 저장하거나 복원하기 위해서는 객체 내부의 정보를 자유롭게 액세스할 수 있어야 한다. 특히 복원하기 위해서는 Visibility가 객체 밖으로 공개되지 않은 Attribute는 쓸수가 없으므로 복원할 수가 없다. 그렇다고 Visibility를 넓힌다면 캡슐화를...

Observer Pattern

Observer Pattern은 말 그대로 무언가 관찰 하는데 유용한 패턴이다. Subject라는 자신의 상태 값을 가지고 있는 객체가 존재 한다. 그리고 Observer라는 Subject의 상태 값을 관찰하는 개체가 존재한다. Observer가 Subject 객체를 관찰한다고 생각할 수 있지만, 실제로는 Subject가 자신의 상태가 변경이 되면...

Mediator Pattern

여러 객체들이 서로 협력을 할 필요가 있을 때, Mediator Pattern이 유용하게 사용할 수 있다. 만약 Mediator Pattern을 사용하지 않고 여러 객체들이 서로 협력을 하기 위해서는 서로간의 연결이 필요하게 되고 이 연결은 복잡해지기 쉽다. Mediator Pattern을 이용한다면, 복잡한 연결을 Mediator라는 중재자를 통...

Chain Of Responsibility Pattern

Chain Of Responsibility Pattern은 복수의 객체를 연결하여, 연결한 객체들을 차례로 돌며 처리하는 방법이다. 여기에서 연결된 객체들은 넘어오는 요구 객체를 처리할 수 있을 때 까지 다음에 연결된 객체에게 일을 넘깁니다. 즉, 요구 객체를 적절하게 처리할 수 있는 처리 객체가 적절하게 처리를 할 수 있습니다. 몇몇 경우에, ...

Visitor Pattern

Visitor Pattern은 알고리즘이 처리하는 객체 집합에서 알고리즘은 분리한 Pattern이다. 알고리즘을 분리한 결과 새로운 Operation을 추가하기 위해서 객체 집합을 수정할 필요가 없어졌다. 즉, Open-Closed Principle을 만족할 수 있습니다. Open-Closed Principle은 처리 연산에 대해서는 확장할 수 있지...

Decorator Pattern

새로운 기능을 추가하귀 위해서는 SubClass를 많이 이용을 한다. SubClass는 Compile Time에 기능을 추가할 수 있다. 그리고 추가된 기능은 Original Class의 모든 객체들에게 적용이 된다. 사실 설계시에 추후에 어떤 기능과 기능들의 조합이 더 필요할지 알기는 힘들다. 이 말은 추후에 새롭게 필요로 하는 기능과 그 기능...

Composite Pattern

Composite Pattern은 하나의 객체와 같이 동일한 방법으로 다양한 객체 그룹들을 다룰 수 있다. 이러한 Composite Pattern의 목적은 객체들을 Tree 구조로 part-whole hierarchy를 표현하는 것이다. 이러한 목적을 달성하기 위해서 그룻(composite)와 내용물(leaf)을 동일시해서 재귀적인 구조를 구성을 ...

Bridge Pattern

객체지향 설계는 기본적으로 인터페이스와 구현을 분리한 접근 방법이다. 이렇게 되면, 객체의 구현 방식이 바뀌더라도 그 객체를 사용하는 프로그램은 수정하지 않아도 되기 때문에 변경를 한정할 수 있다. 그렇다면, Bridge Pattern을 언제 사용하면 좋을까? 새로운 ‘기능’을 추가하고 싶은 경우 새로운 ‘구현’을 추가하고 싶은 경우 기능을 ...