프로그래밍/디자인패턴 스피비 2011. 7. 15. 15:45
Template Method Pattern Class란? 상위 클래스쪽에 템플릿에 해당하는 메서드가 정의 되어 있고, 그 메서드의 정의 안에는 추상메서드가 사용되고있다.(순수가상함수) 상위 클래스만 보면 추상 메서드를 '어떻게 호출하고 있는지' 알 수 있지만, '어떤 처리가 수행되는지'는 알 수 없다. 추상 메서드를 실제로 구현하는 것은 하위메서드 이다. 서로 다른 하위 클래스에서 서로 다른 구현을 실행하면 서로 다른 처리가 실행된다.(다형성 느낌이랄까?) 하위 클래스가 어떤 구현을 하더라도, 처리의 큰 흐름은 상위 클래스에서 결정한대로. 즉, 상위 클래스에서 처리의 뼈대 결정하고, 하위 클래스에서 구체적인 내용을 결정하는 디자인 패턴. AbstractClass( 추상 클래스 ) ConcreteClass..
프로그래밍/디자인패턴 스피비 2011. 7. 13. 18:20
Pointer Implementation 라는 것을 알게되었다. 헤더 파일에 모든 클래스를 넣는것이 아니라, 그 헤더 안에서 의존적인 class 를 .cpp 로 빼므로서 외부에서 그 헤더를 추가할때, 이 내용을 모르게하는 방법. 상당히 충격적인 하나의 패턴이라 정리해봄 ㅎㅎㅎ
프로그래밍/디자인패턴 스피비 2011. 4. 14. 15:28
Decorator Pattern 객체를 장식하는 형식으로 실행 중에 클래스를 꾸미는 패턴이다. 원래 클래스의 코드는 전혀 바꾸지 않고도 객체에 새로운 임무를 부여할 수도 있다. ( 즉, 부모클래스를 건드리지않고, 원하는 함수를 추가할 수 있다. 이래서 쓰는것임) 1. Decorator Pattern의 정의 데코레이터 패턴에서는 객체에 추가적인 요건을 동적으로 첨가한다. 데코레이터는 자식클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다. 2. Decorator Pattern의 특징 1) 데코레이터의 부모클래스는 자신이 장식하고 있는 객체의 부모클래스와 같으며, 한 객체를 여러 개의 데코레이터로 감쌀 수 있다. 2) 또한 데코레이터는 자신이 감싸고 있는 객체와 같은 부모클래스를 가..
프로그래밍/디자인패턴 스피비 2011. 4. 14. 11:41
스트래티지 패턴(Strategy pattern) 스트래티지 패턴(Strategy pattern) 에서는 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. 스트래티지를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할수있다. 즉, 쉽게 말하면 클래스안에서 행동을 하는 것들을 멤버함수로 설정하지말구, 행동하는것을 따로 클래스로 만드는 방법. (행동클래스는 상속해서 구현된다.) Strategy Pattern 적용 전 만약 이런 문제가 있다고 쳐보자. 이 세상의 오리들을 클래스화 한다고 하자. 진짜 오리처럼 보이게 하기 위해 오리 클래스들에 다음과 같이 '수영하다'라는 행위를 구현해 놓았다. class MalladrDuck {public: void swim() { ..
프로그래밍/디자인패턴 스피비 2011. 4. 5. 16:49
//Singleton 기반 클래스 //나중에 singlton이 필요하면 언제든 참고하면됨 class S1Singleton { protected: S1Singleton() {}// private 생성자 S1Singleton( const S1Singleton&){}; // 복사금지 public: // 오직한개의객체를만들어넘겨주는static 멤버함수 static S1Singleton& GetInstance() { static S1Singleton Instace; return Instace; } }; #define G_SINGLETONE S1Singleton::GetInstance() //문제2 class S1Cursor : public S1Singleton { public: int m_x; int m_y; p..