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

国内网站建设 必须实名认证网站网上商城建设

国内网站建设 必须实名认证,网站网上商城建设,免费psd素材网,广西建设四库一平台网站什么是模板方法模式 模板方法模式定义了一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构就可以重定义该算法的某些特定步骤。     模板方法模式主要包含几下几个角色:         AbstractClass(抽…

什么是模板方法模式

    模板方法模式定义了一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构就可以重定义该算法的某些特定步骤。
    模板方法模式主要包含几下几个角色:
        AbstractClass(抽象类):在抽象类中定义了一系列基本操作,这些操作可以是具体的,也可以是抽象的,每一个基本操作对应算法的一个步骤,在子类中可以重定义或实现这些步骤。同时在抽象类中实现了一个模板方法用于定义一个算法的框架,模板方法不仅可以调用抽象类中实现的方法,也可以调用子类中实现的基本方法。
        ConcreteClass(具体类):是抽象类的子类,用于实现父类中声明的抽象方法,也可以覆盖父类中已经实现的具体方法。

模板方法模式的优缺点

优点

  1. 在父类中定义模板方法,子类实现细节的处理并不会改变模板方法中的执行步骤。
  2. 提取了公共逻辑放到父类中,提高代码复用性。
  3. 可在子类中重定义父类中的方法,提高了扩展性。
  4. 增加新的子类方便,符合单一职责原则和开闭原则。

缺点

  1. 需要为每一个基本方法的不同实现提供一个子类,如果父类中可变基本方法过多,将会导致类的个数增加。系统更加庞大,设计更加抽象。

模板方法模式的应用场景

  1. 对一些复杂的算法进行分割,将算法中固定不变的部分设计为模板方法和父类具体方法,一些可变的部分由子类实现。
  2. 多个类中有公共行为应该被提取出来到父类中减少代码重复。
  3. 需要通过子类来决定父类算法中某个步骤是否执行,实现子类对父类的反向控制。

模板方法模式的案例

// 抽象类
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.yayakq.cn/news/244614/

相关文章:

  • 建站工具模板做影视网站版权问题
  • 常州建设工程电子审图网站骨骼型的网站
  • 织梦电影网站免费模板贵州省网站集约化建设
  • 公司的网站建设费做什么费用可以做旅行计划的网站
  • 福州高端网站制作呼市互联网公司排名
  • 营销型网站易网拓二手网站建设
  • 织梦网站搬家教程怎样建设论坛网站
  • 招标网址网站大全微信手机网站流程
  • 网站销售策划非洲做网站用哪里服务器好
  • 贵阳专业建网站电商网页设计实训报告
  • 岳阳做网站哪家好少儿编程app
  • 好看的网站排版常平建设局网站
  • 岫岩洋河网站建设网站建站网站我待生活如初恋
  • 新乡模板建站长沙百度首页优化排名
  • 济宁市城市建设投资中心网站网站点赞怎么做
  • 安康有建网站的公司吗网页生成pdf保存到哪里了
  • 深圳市坪山新区建设局网站网站推广策略和营销策略
  • c 手机版网站开发国外的电商网站有哪些
  • 乐器销售网站模板未备案网站通知
  • 茶叶市场网站建设方案物流公司网站方案
  • 建设银行官方网站官网wordpress页脚代码
  • 卢氏县网站建设推广四川教育公共信息服务平台
  • 汕头仿站定制模板建站wordpress标签3d
  • 网站浮动窗口代码活动推广方案策划
  • 深圳网站建设计地方性门户网站有哪些
  • 仪器仪表网站制作虚拟主机安装网站
  • 牡丹江制作网站weui-wordpress
  • win7怎么做网站映射wordpress文章生成海报插件
  • ps个人网站设计auxer可以做网站嘛
  • 四川省省建设厅网站wordpress 判断登录