목록CS/소프트웨어공학 (3)
Hansel

장식 패턴? 장식 패턴은 객체에 동적으로 새로운 행위를 추가할 수 있도록 해주는 패턴이다. 클래스의 책임을 런타임동안 코드 수정없이 바꾸고 싶은 경우 사용하며 한 객체를 다른 객체로 포장하여 책임을 추가하거나 변경한다. 장식패턴은 전체 클래스가 아닌 특정 객체에 추가적인 책임을 추가하는 방식을 이용한다. 장식자는 장식하는 원래 객체와 동일한 타입의 객체이고 장식된 객체는 원래 객체 대신에 사용이 가능해야한다. 장식패턴은 다음과 같은 특징을 가진다. 행위의 추가는 상속을 통해 이루어지는 것이 아니다. 한 객체는 여러 개의 장식자를 사용할 수 있다. 동적으로 런타임에 객체를 장식할 수 있다. 보통 장식된 순서가 중요하지 않다. 행위의 추가는 상속이 아닌 메서드나 생성자를 통해 추가될 수 있다. 예를 들어 커..

옵저버 패턴? 이 패턴은 특정 객체가 관심 있어 하는 사건의 발생을 알려주어야 할 상황에 사용한다. 관찰하는 객체가 능동적으로 관찰하는 것이 아니라 관찰 대상으로부터 어떤 사건이 발생하였을 때 수동적으로 통보해주길 기다린다. 예시로 페이스북의 알림이나 유튜브 채널의 알림 등은 관찰자(구독자)는 관찰 대상(채널)로부터 특정 상태의 변화를 수동적으로 전달받는다. 페이스북이나 유튜브의 예시처럼 한 객체와 여러 객체 간 1대다 관계를 맺을 수 있고 상태가 변하면 자동으로 관계를 맺은 다른 객체에 통보를 해준다. 일반적으로 소프트웨어 설계에선 느슨한 결합이 중요하다. 결합도를 낮춤으로써 객체간의 독립성을 유지시키고 유지보수와 확장 등에 유연하게 대처할 수 있다. Observer pattern 의 관찰자와 관찰 대..

디자인 패턴? 디자인 패턴이라 하면 일반적으로 Gangs of Four의 디자인 패턴이 가장 먼저 생각날 것이다. GoF는 Gangs of Four의 약자로 네명의 컴퓨터 공학자들이 제안한 디자인 패턴을 의미한다. 소프트웨어 설계를 위한 지식이나 노하우를 공유하기 위한 방법 중 하나이며 설계 중 재사용할 경우에 유용한 것으로 디자인패턴을 정립한다. 소프트웨어 설계에 대한 지식이나 노하우가 문제 유형별로 잘 구체화되어있고 동일한 유형의 문제를 해결하는 방법에 대한 지식이나 노하우가 패턴 형태로 충분히 일반화 되어있다. 또한 쉽게 재사용할 수 있도록 객체지향 개념에 따른 설계만을 패턴으로 지정한다. 전략패턴 전략패턴은 객체들이 할 수 있는 행위 각각에 대한 전략을 생성하고 유사한 행위들을 캡슐화 하는 인터페..