Design Pattern Template Method
来源:互联网 发布:centos共享文件夹 编辑:程序博客网 时间:2024/05/22 06:35
【适用性】
(1)一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。
(2)各子类中公共的行为应被提取出来并集中到一个公共的父类中来避免代码重复。
(3) 控制子类扩散。
【引用】
TEMPLATE METHOD——看过《如何说服女生上床》这部经典文章吗?女生从认识到上床的不变的步骤分为巧遇、打破僵局、展开追求、接吻、前戏、动手、爱抚、进去八大步骤(Template method),但每个步骤针对不同的情况,都有不一样的做法,这就要看你随机应变啦(具体实现);
模板方法模式:模板方法模式准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架,而将逻辑的细节留给具体的子类去实现。
【示范代码】
view.h
class View{
public:
View();
virtual ~View()=0;
void Display();
void SetFocus();
void ResetFocus();
virtual void DoDisplay() = 0;
};
view.cpp
View::View (){}
View::~View(){
std::cout <<"View destructor"<<std::endl;
}
void View::Display(){
SetFocus();
DoDisplay();
ResetFocus();
}
void View::SetFocus(){}
void View::ResetFocus(){}
MyView.h
class MyView : public View{
public:
MyView();
virtual ~MyView();
virtual void DoDisplay();
private:
////
};
MyView.cpp
MyView::MyView(){}
MyView::~MyView()
{
std::cout<<"MyView destructor"<<std::endl;
}
void MyView::DoDisplay()
{
std::cout <<"MyView DoDisplay"<<std::endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
MyView view;
view.DoDisplay ();
View *p = new MyView;
p->DoDisplay ();
delete p;
return 0;
}
说白了,就是基类给出一个函数的抽象实现,而子类继承下来之后,自己实现具体的实现。
- Design Pattern Template Method
- [Design Pattern] Template Method Pattern
- Design Pattern: Template Method 模式
- 一句话Design Pattern:Template Method
- Design Pattern -- Template Method Pattern(一)
- Template Method Pattern(Gof-Behavioral Design Pattern)
- Design Pattern(1)-Template Method Pattern
- design pattern notes [5] - template method
- Design Pattern - Template Method(C#)
- Template Method Design Pattern - 模板方法设计模式
- Java设计模式 Design Pattern:模板方法 Template Method
- 设计模式之-模版方法(Template Method Design Pattern)
- Template Method Pattern
- Template Method Pattern
- Template Method Pattern
- Template Method Pattern
- Template method pattern
- Template Method Pattern
- CDialog中不响应OnKeyDown和一些相关问题
- Codea:给我个iPad 我就能占领iOS榜单
- linux下开启ftp和telnet服务
- google map 中marker图标集合(转)
- H1555
- Design Pattern Template Method
- WINPE的DOS工具箱删除sam文件方式破解xp开机密码
- HDU4218 IMBA?
- 华为2012第四届编程大赛初赛题目(4-22下午)
- 输入网银密码时会重复
- Android类库
- emacs中文输入的解决
- wince中使用命令行提示符(cmd)
- HDU4217 Data Structure?