欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 编程语言 > >内容正文

asp.net

设计模式-凯发k8官方网

发布时间:2025/1/21 13 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 设计模式-模板方法(template method patten) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
  • 定义一个操作中算法的框架,而将一些步骤延迟到一些子类。使得子类可以不改变一个算法的结构即可重新定义改算法的某些特定步骤

先举一个使用模板方法的小例子方便大家加深印象和理解

首先画下类图

 

image.png

 

结构比较简单,看代码就一目了染

首先我们建一个抽象电脑类

/*** @author shuliangzhao* @title: computer* @projectname design-parent* @description: todo* @date 2019/5/28 23:02*/ public abstract class computer {protected abstract void open();protected abstract void close();public void run() {this.open();this.close();} }

电脑cup是i5的实现类

/*** @author shuliangzhao* @title: i5computer* @projectname design-parent* @description: todo* @date 2019/5/28 23:04*/ public class i5computer extends computer {@overrideprotected void open() {system.out.println("电脑cup是i5的开机");}@overrideprotected void close() {system.out.println("电脑cup是i5的开机");} }

电脑cup是i7实现类

/*** @author shuliangzhao* @title: i7computer* @projectname design-parent* @description: todo* @date 2019/5/28 23:04*/ public class i7computer extends computer {@overrideprotected void open() {system.out.println("电脑cup是i7的开机");}@overrideprotected void close() {system.out.println("电脑cup是i7的关机");} }

客户端

/*** @author shuliangzhao* @title: client* @projectname design-parent* @description: todo* @date 2019/5/28 23:05*/ public class client {public static void main(string[] args) {computer computer = new i5computer();computer.run();computer computer1 = new i7computer();computer1.run();} }

运行结构为:

 

 

注意:抽象模板的基本方法比如例子中的(open和close) 尽量设计为protected类型,不需要暴露的属性和方法尽量不要设置为public

模板方法优点:

1.封装不变部分,扩展可变部分,把认为不变部分方法封装到父类实现,可变部分通过子类来继承实现扩展。
2.提取公共代码,便于维护。
3.行为由父类控制,子类实现

模板方法缺点:

一般来说抽象类负责声明最抽象,最一般的属性和方法,由实现类去完成。但是模板方法却颠倒了,抽象类定义了部分抽象方法,由子类实现。也就是说子类结构影响了父类结果。

模板方法使用场景

1.子类有公共方法,逻辑差不多

总结

以上是凯发k8官方网为你收集整理的设计模式-模板方法(template method patten)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图