版权声明:本文为博主原创文章,未经博主允许不得转载。有问题可以留言或者邮箱shusheng52@126邮箱联系 https://blog.csdn.net/xiaoshusheng10/article/details/86750658
设计模式:模板模式
- 模板模式简介:
- 简介:一个抽象类公开定义了它的方法的方式/模式。它的子类可以按照需要重写方法实现,但调用将以抽象类中定义的方式进行。
- 意图:定义一个操作中的算法的骨架,而讲义步骤延迟到子类中。
- 主要解决:一些方法通用,却在每一个子类都重写了这一个方法。
- 使用场景:
- 有多个子类公有的方法,且逻辑相同
- 重要的,复杂的方法可以考虑作为模板方法
- 模板模式成分:
- 模板抽象类,定义公共的方法,更多定义实现的流程
- 具体实现类:定义细化
- 模板模式优缺点:
- 优点:
- 封装不变部分,扩展可变的部分
- 提取公共代码,便于维护
- 行为由父类控制,子类实现
- 缺点:
- 每一个不同的实现都需要一个子类实现,导致类的个数增加,使得系统更加庞大。
- 优点:
- 模板模式的实现:
- 模板抽象类:
package com.fg.java.template; public abstract class SoftLive { abstract void initialize(); abstract void startplay(); abstract void end(); public final void play(){ initialize(); startplay(); end(); } }
- 具体实现类:
package com.fg.java.template; public class QQSoft extends SoftLive { @Override void initialize() { System.out.println("Wechat initialize"); } @Override void startplay() { System.out.println("Wechat startplay"); } @Override void end() { System.out.println("QQSoft end"); } }
package com.fg.java.template; public class Wechat extends SoftLive { @Override void initialize() { System.out.println("Wechat initialize"); } @Override void startplay() { System.out.println("Wechat startplay"); } @Override void end() { System.out.println("Wechat end"); } }
- 模板抽象类: