当前位置: 首页 > news >正文

成都网站建设推荐到访率公司省建设厅网站

成都网站建设推荐到访率公司,省建设厅网站,北方工业大学网站建设,西安企业网站建站什么是模板方法模式 模板方法模式定义了一个操作中算法的框架#xff0c;而将一些步骤延迟到子类中#xff0c;使得子类可以不改变一个算法的结构就可以重定义该算法的某些特定步骤。     模板方法模式主要包含几下几个角色#xff1a;         AbstractClass(抽…什么是模板方法模式 模板方法模式定义了一个操作中算法的框架而将一些步骤延迟到子类中使得子类可以不改变一个算法的结构就可以重定义该算法的某些特定步骤。     模板方法模式主要包含几下几个角色         AbstractClass(抽象类)在抽象类中定义了一系列基本操作这些操作可以是具体的也可以是抽象的每一个基本操作对应算法的一个步骤在子类中可以重定义或实现这些步骤。同时在抽象类中实现了一个模板方法用于定义一个算法的框架模板方法不仅可以调用抽象类中实现的方法也可以调用子类中实现的基本方法。         ConcreteClass(具体类)是抽象类的子类用于实现父类中声明的抽象方法也可以覆盖父类中已经实现的具体方法。 模板方法模式的优缺点 优点 在父类中定义模板方法子类实现细节的处理并不会改变模板方法中的执行步骤。提取了公共逻辑放到父类中提高代码复用性。可在子类中重定义父类中的方法提高了扩展性。增加新的子类方便符合单一职责原则和开闭原则。 缺点 需要为每一个基本方法的不同实现提供一个子类如果父类中可变基本方法过多将会导致类的个数增加。系统更加庞大设计更加抽象。 模板方法模式的应用场景 对一些复杂的算法进行分割将算法中固定不变的部分设计为模板方法和父类具体方法一些可变的部分由子类实现。多个类中有公共行为应该被提取出来到父类中减少代码重复。需要通过子类来决定父类算法中某个步骤是否执行实现子类对父类的反向控制。 模板方法模式的案例 // 抽象类 public abstract class SoyaMilk {final void make() {select();if (customerWantCondiments()) {addCondiments();}soak();beat();}void select() {System.out.println(第一步选择好的新鲜黄豆 );}abstract void addCondiments();void soak() {System.out.println(第三步 黄豆和配料开始浸泡 需要3小时 );}void beat() {System.out.println(第四步黄豆和配料放到豆浆机去打碎 );}boolean customerWantCondiments() {return true;} }// 具体类 public class RedBeanSoyaMilk extends SoyaMilk {Overridevoid addCondiments() {System.out.println( 加入上好的红豆 );}}public class PureSoyaMilk extends SoyaMilk {Overridevoid addCondiments() {}Overrideboolean customerWantCondiments() {return false;}}public class PeanutSoyaMilk extends SoyaMilk {Overridevoid addCondiments() {System.out.println( 加入上好的花生 );}}public static void main(String[] args) {//制作红豆豆浆System.out.println(----制作红豆豆浆----);SoyaMilk redBeanSoyaMilk new RedBeanSoyaMilk();redBeanSoyaMilk.make();System.out.println(----制作花生豆浆----);SoyaMilk peanutSoyaMilk new PeanutSoyaMilk();peanutSoyaMilk.make();System.out.println(----制作纯豆浆----);SoyaMilk pureSoyaMilk new PureSoyaMilk();pureSoyaMilk.make(); } 模板方法模式在源码中的应用 InputStream // 抽象类 public abstract class InputStream implements Closeable {public abstract int read() throws IOException;public int read(byte b[]) throws IOException {return read(b, 0, b.length);}...... }// 具体类 public class FileInputStream extends InputStream {public int read() throws IOException {return read0();}public int read(byte b[]) throws IOException {return readBytes(b, 0, b.length);}...... }
http://www.dnsts.com.cn/news/165559.html

相关文章:

  • 宁波网站建设制作电话号码深圳网站策划
  • 免费com域名网站咖啡色网站模板
  • 产品网站建设广州口碑好的网站建设
  • 网络管理员需要懂网站建设吗seo做的比较牛的公司
  • 做高端企业网站phpcmsv9 网站搬家
  • 长沙网站备案拍照点自建站是什么意思
  • html网站代码网站页面尺寸
  • 如何开网站建设公司网页框架图
  • 网站开发和软件开发那个简单网站如何被收录情况
  • 建设银行临江市支行网站qq降龙是哪个公司开发的
  • 下载爱南宁官方网站江苏省交通运输厅门户网站建设管理办法
  • 免费的行情网站app软件大全网站建设需要哪些费用
  • 集团网站下分网站 模板wordpress开启多站点好处
  • 手机网站拦截怎么解除不用wordpress 知乎
  • win7做本地网站连云港网站建设价位
  • 做电器推广的网站青岛推广信息
  • 网站后台文章列表里的每篇文章的文字全部乱码怎么办?网站开发有几个阶段
  • 山西省城乡住房和建设厅网站首页西安seo关键词排名优化
  • 礼物说网站模板青海省wap网站建设公司
  • 普洱市网站建设网站装修的代码怎么做
  • html5 手机网站 模版wordpress后台自定义页面
  • 河北唐山网站建设爱站查询工具
  • 互联网建站谷歌关键词推广怎么做
  • 推荐聊城做网站国家企业信用信息公示系统官网全国
  • 网络公司如何开网站湖南长沙旅游十大必去景区
  • 瑞金网站建设推广wordpress防攻击
  • 做网站的linux程序代码vs怎么做网站
  • 小说网站如何做书源一女被多男做的视频网站
  • 和京东一样的网站建设网站是做手机版好还是pc版好
  • 手机网站的推广工程师培训