Performance, 성능 부분에 데하여 얘기를 해보겠습니다.Performance (성능)일종의 측정, 보고, 성과 요약 방법입니다.지능적인 선택에 유용합니다.또한 마케팅 광고를 통해 확인할 수 있습니다.그리고 조직의 근본적인 동기를 파악하기 위한 핵심 사항 입니다.Q. 어떤 하드웨어가 다른 프로그램에 대해 다른 하드웨어보다 더 나은 이유는 무엇입니까?Q. 하드웨어와 관련된 시스템 성능 요소는 무엇입니까? (예: 새로운 기계 또는 새로운 운영 체제가 필요합니까?)Q. 기계의 명령어 세트가 성능에 어떤 영향을 미칩니까?Computer Performance: Time, Time, TimeResponse Time (Latency) - 응답, 대기시간: 작업을 수행할때 걸리는 시간 입니다. 예시는 아래에 적어..
Mediator PatternMediator 패턴은 객체지향 설계에서 객체들 간의 상호작용을 중재하는 중재자(Mediator) 객체를 사용하여 객체들이 직접적으로 서로 참조하지 않고 통신하도록 만드는 패턴입니다.이를 통해 객체들 간의 결합도를 낮추고, 상호작용을 한 곳에 집중시켜서 코드의 유지보수성을 높입니다.또한 객체간의 복잡한 상호작용을 중앙 집중화하여 관리할 필요가 있는 상황에서 주로 사용됩니다.이를 통해서 객체들이 직접 통신하는 대신 Mediator를 통해 간접적으로 통신하도록 하여 결합도를 낮추고 코드의 유지 보수성을 높입니다. Mediator는 중개인, 각 회원들은 colleage 입니다.Diagram of Mediator PatternMediator는 중개인, 각 회원들은 colleage 입..
Visitor PatternVisitor Pattern은 데이터 구조와 처리를 분리하는 패턴입니다.데이터 구조 안에 많은 요소가 저장되어 있고, 그 각 요소에 데하여 무엇인가 처리해 나간다고 할때, 이때 그 처리의 코드는 어디에 써야 할지 고민이 됩니다.일반적으로 생각하면 데이터 구조를 표시하고 있는 클래스 안에 기술 해야 합니다.하지만, 만약 그 처리가 여러 종류라면 새로운 처리가 필요할 때마다 데이터 구조의 클래스를 수정해야 합니다.요소들의 클래스를 변경하지 않고 새로운 작업을 추가할 수 있게 해주는 디자인 패턴입니다.객체 구조를 변경하지 않고도 새로운 작업을 쉽게 추가할 수 있도록 합니다.Visitor 패턴은 객체의 구조가 안정적이지만 객체에 수행할 작업은 자주 바뀌는 경우에 사용하면 유용합니다.객..
Observer PatternObserver는 관찰하는 사람의 의미입니다.Observer 패턴에서는 관찰 대상(Subject)의 상태가 변화하면 관찰자(Observer)에게 알려줍니다.Obsever 패턴은 상태 변화에 따른 처리를 기술할 때 효과적입니다.어떠한 이벤트가 일어났을 때 이벤트를 바라보던 감시자들이 바로 반응할 수 있는 Pattern 입니다.-> Subscriber, Listener Pattern Observer Pattern이 아닌 경우이벤트가 일어났는지 확인하기 위해 1초, 1분, 1시간마다 확인을 해야합니다.이러한 방법을 polling 이라고 하여 필요 없는 리소스 낭비가 생깁니다.Polling 주기가 1시간일 경우, 1시간 이내에 이벤트 일어나다가 사라진다면 이벤트가 일어났는지 알 수 ..
Memento PatternMemento 패턴은 객체의 상태를 저장하고 복원할 수 있게 하는 디자인 패턴입니다.이 패턴은 객체의 내부 상태를 캡슐화하여 외부에 노출시키지 않고도 객체의 상태를 저장하고 복원할 수 있게 해줍니다.일반적으로 어떤 Object의 히스토리를 관리하고 싶을 때 유용한 패턴입니다. → 게임에서 Save하는 것을 떠올리면 됩니다.가령 텍스트 에디터 사용할 때 undo와 같은 기능을 사용하여 삭제 하기 전 상태로 텍스트 복원이 가능하고, 그 기능을 몇 단계로 실행해서 편집작업을 점점 과거로 돌리는 것도 가능함객체지향프로그램에서 undo기능을 실행하려면 인스턴스를 가지고 있는 정보를 저장해 둘 필요가 있습니다.단, 저장만 해서는 안되고, 저장한 정보로부터 인스턴스를 원대래로 되돌릴 수 있..
Chain of Responsibility PatternChain of Responsibility Pattern은 요청을 처리할 수 있는 기회를 여러 객체들에게 부여함으로써 그들 간의 결합도를 없애주는 패턴입니다.복수의 Object를 사슬처럼 연결해주면, 그 오브젝트의 사슬을 차레대로 돌아다니면서 목적한 Object를 결정하는 방법입니다.responsibility 개념을 갖는 모듈들에 체인을 만드는 Pattern 입니다.chain of responsibility pattern이 아닌 결제 예제클라이언트 코드에서 결제 요청을 발행 합니다.결제 요청 안에는 결제방법과 금액이 존재합니다.결제 방법에는 cash, credit card, debit card 등이 있습니다.결제 요청을 처리하는 함수나 클래스가 있어..
Command Pattern커맨드 패턴은 요청을 독립된 객체로 변환하여 요청에 대한 모든 정보를 포함하게 만드는 행동 패턴입니다.다양한 요청을 메서드로 매개변수화하고, 요청의 실행을 지연하거나 큐에 넣을 수 있으며, 실행 취소 기능을 지원할 수 있습니다.여러 명령들을 추상화해서 class로 정의하고 Object로 만들어서 사용하는 Pattern입니다.또한 행위(Behavior) 패턴에 속합니다.클래스가 일을 실행할떄, 자신의 클래스 or 다른 클래스의 Method를 호출합니다.그러나 Method를 호출한 결과는 Object에 반영되지만, 일의 이력은 어디에도 남지 않습니다.이때, ‘이 일을 실행하시오’ 라는 ‘명령’을 표현하는 클래스가 있으면 편합니다.명령을 나타내는 클래스의 인스턴스로 하나의 ‘물건’처..
Strategy Pattern스트래티지 패턴(Strategy Pattern)은 행위 패턴(Behavioral Pattern)의 일종으로, 알고리즘 군을 정의하고, 각 알고리즘을 캡슐화하며, 이들을 상호 교환 가능하게 만드는 패턴입니다.즉, 알고리즘을 클라이언트에서 분리하여 독립적으로 변경할 수 있게 합니다.이를 통해 클라이언트 코드의 변경 없이 알고리즘을 쉽게 교체할 수 있습니다.Runtime 중에 알고리즘을 선택하게 합니다.하나의 알고리즘을 직접 Implementing 하는 대신 어떠한 알고리즘을 사용할지 Runtime Instruction을 받습니다.Animal을 받아서 Speaking을 시키는 함수동물은 고양이 혹은 사자고양이가 들어오면 “meow”사자가 들어오면 “roar”함수는 이 상태로 고정이..
Composite Pattern컴포지트 패턴(Composite Pattern)은 객체를 트리 구조로 구성하여 부분-전체 계층을 구현하는 패턴입니다.이를 통해 클라이언트가 단일 객체와 복합 객체를 동일하게 처리할 수 있습니다.컴포지트 패턴은 구조 패턴(Structural Pattern)의 일종으로, 객체를 그룹으로 묶어 하나의 객체처럼 다룰 수 있게 합니다.컴퓨터의 파일 시스템에서는 Directory 라는 것이 있고, Directory안에는 파일이나 다른 하위 Directory가 있기도 합니다.마치 “상자 안의 상자” 같은 구조, 즉 재귀적 구조를 가집니다.Directory 엔트리를 차례대로 조사할 때, 그릇과 내용물을 같은 종류로 취급하면 편리할 수 있습니다.이 그릇을 내용물과 동일시 하여 재귀적인 구조..
Flyweight Pattern플라이웨이트 패턴(Flyweight Pattern)은 메모리 사용을 줄이기 위해 많은 수의 작은 객체를 공유하는 디자인 패턴입니다. 이 패턴은 객체의 상태를 내적 상태와 외적 상태로 나누어, 내적 상태를 공유하여 메모리 사용을 최적화합니다.Flyweight Pattern → 동일한 것을 공유해서 낭비를 없앤다는 특징이 있습니다.Flyweight는 플라이급 이라는 의미로, 권투에서 가장 체중이 가버운 체급을 의미합니다.Design Pattern에서는 Object를 가볍게 하기 위한 것의 의미에서 사용됩니다.Object는 컴퓨터 내부에서 가상적으로 존재하는 것이기 때문에 무겁다 또는 가볍다고 표현은 실제 무게가 아닌, “메모리의 사용량”을 의미하는 것입니다.객체를 만들 때 그 ..