概述
- 父类抽象出子类共有的方法,并且自己实现他
- 子类实现各自不同的业务
- 父类实现的方法按照一定的逻辑调用抽象方法
- 为了反之子类重写父类实现的方法父类定义为final方法
定义
一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。
角色
AbstractClass:
抽象类ConcreteClass:
具体类
场景
- 一次实现算法的不变部分,并将其留给子类来实现可能变化的行为
- 子类之间的共同行为应分解并集中在一个共同类中以避免代码重复的情况
- 控制子类扩展
实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
//抽象类 class AbstractClass { public: virtual ~AbstractClass() {} void templateMethod() { //... primitiveOperation1(); //... primitiveOperation2(); //... } virtual void primitiveOperation1() = 0; virtual void primitiveOperation2() = 0; //... }; //具体类 class ConcreteClass : public AbstractClass { public: ~ConcreteClass() {} void primitiveOperation1() { std::cout << "primitive operation 1" << std::endl; //... } void primitiveOperation2() { std::cout << "primitive operation 2" << std::endl; //... } //... }; |
1 2 3 4 5 6 7 8 |
auto main()->int { AbstractClass * tm = new ConcreteClass; tm->templateMethod(); delete tm; return 0; } |
本文为原创文章,版权归Aet所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 创建型:抽象工厂模式08/26
- ♥ 行为型:观察者模式08/27
- ♥ 创建型:原型模式09/25
- ♥ 创建型:建造者模式09/21
- ♥ 架构模式:MVVM模式07/27
- ♥ 结构型:适配器模式09/19