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

佛山行业网站建设龙华住房和建设局网站官网

佛山行业网站建设,龙华住房和建设局网站官网,平面设计包括哪些方面的设计,北京市住房和城乡建设厅官方网站模板方法模式 场景:需使用代码方式实现,考完试后,将各个学生的试卷及答案誊抄一份。 假如有两个学生的试卷誊抄完毕. // 学生A public class TestPaperA {// 试题1public void testQuestion1() {System.out.println("问题一:XXXXXXXX…

模板方法模式

场景:需使用代码方式实现,考完试后,将各个学生的试卷及答案誊抄一份。

假如有两个学生的试卷誊抄完毕.

// 学生A
public class TestPaperA {// 试题1public void testQuestion1() {System.out.println("问题一:XXXXXXXX[] A.xx B.xx C.xx D.xx ");System.out.println("答案 A");}// 试题2public void testQuestion2() {System.out.println("问题二:XXXXXXXX[] A.xx B.xx C.xx D.xx ");System.out.println("答案 A");}// 试题3public void testQuestion3() {System.out.println("问题三:XXXXXXXX[] A.xx B.xx C.xx D.xx ");System.out.println("答案 A");}
}
// 学生B
public class TestPaperB {// 试题1public void testQuestion1() {System.out.println("问题一:XXXXXXXX[] A.xx B.xx C.xx D.xx ");System.out.println("答案 B");}// 试题2public void testQuestion2() {System.out.println("问题二:XXXXXXXX[] A.xx B.xx C.xx D.xx ");System.out.println("答案 B");}// 试题3public void testQuestion3() {System.out.println("问题三:XXXXXXXX[] A.xx B.xx C.xx D.xx ");System.out.println("答案 B");}
}
  • 客户端
System.out.println("学生A的试卷");
TestPaperA a = new TestPaperA();
a.testQuestion1();
a.testQuestion2();
a.testQuestion3();System.out.println("学生B的试卷");
TestPaperB b = new TestPaperB();
b.testQuestion1();
b.testQuestion2();
b.testQuestion3();

一眼看出,很多重复的代码,直接进行提炼抽离。此例中,试卷都是一样的,而答案是不同的,我们直接将重复的代码提炼,然后学生去继承它即可。

  • 试卷类
// 试卷类
public abstract class TestPaper { // 3道题的答案protected abstract String answer1();protected abstract String answer2();protected abstract String answer3();// 试题1public void testQuestion1() {System.out.println("问题一:XXXXXXXX[] A.xx B.xx C.xx D.xx ");System.out.println("答案 " + answer1());}// 试题2public void testQuestion2() {System.out.println("问题二:XXXXXXXX[] A.xx B.xx C.xx D.xx ");System.out.println("答案 " + answer2());}// 试题3public void testQuestion3() {System.out.println("问题三:XXXXXXXX[] A.xx B.xx C.xx D.xx ");System.out.println("答案 " + answer3());}  
}

学生类只需要继承它,然后填写自己的答案即可。因为父类已经建立好了所有重复的模板

// 学生A
public class TestPaperA extends TestPaper{@Overrideprotected String answer1() {return "A";}@Overrideprotected String answer2() {return "A";}@Overrideprotected String answer3() {return "A";}
}
  • 客户端
System.out.println("学生A的试卷");
TestPaper a = new TestPaperA();
a.testQuestion1();
a.testQuestion2();
a.testQuestion3();

那么上述的例子中,用的一种设计模式就是模板方法模式。定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。

结构图及代码示例如下:

在这里插入图片描述

public abstract class AbstractClass {// 模板方法(所有重复的代码都放入这里)public void templateMethod() {...}// 子类的特定实现public abstract void primitiveOperation1();public abstract void primitiveOperation2();}
  • 子类
public class ConcreteClassA extends AbstractClass {@Overridepublic void primitiveOperation1() {System.out.println("A类具体实现一");}@Overridepublic void primitiveOperation2() {System.out.println("A类具体实现二");}
}

模板方法是通过把不变行为搬到父类(超类),去除子类中重复代码来体现它的优势。

模板方法是提供了一个代码复用平台。

当不变的和可变行为在方法的实现中混合在一起的时候,不变行为就会在类中重复出现。我们通过模板方法将这些行为搬移到单一的地方,这样帮助子类摆脱重复的不变行为的纠缠。

外观模式

以一个股票买卖的例子来理解一下,现在有股票、国债、房产,买入卖出代码如下:

  • 股票
// 股票1
public class Stock1 {public void buy() {System.out.println("股票1买入");}public void sell() {System.out.println("股票1卖出");}
}
// 股票2
class Stock2 {public void buy() {System.out.println("股票2买入");}public void sell() {System.out.println("股票2卖出");}
}
  • 国债、房产
// 国债1
public class NationalDebt1 {public void buy() {System.out.println("国债买入");}public void sell() {System.out.println("国债卖出");}
}// 房产
class Realty1 {public void buy() {System.out.println("房产买入");}public void sell() {System.out.println("房产卖出");}
}
  • 客户端
Stock1 stock1 = new Stock1();
Stock2 stock2 = new Stock2();
NationalDebt1 nd1 = new NationalDebt1();
Realty1 rt1 = new Realty1();// 买入
stock1.buy();
stock2.buy();
nd1.buy();
rt1.buy();// 卖出
stock1.sell();
stock2.sell();
nd1.sell();
rt1.sell();

外观模式

增加一个基金类,结构图

在这里插入图片描述

  • 基金类代码
public class Fund {Stock1 stock1;Stock2 stock2;NationalDebt1 nd1;Realty1 rt1;public Fund() {stock1 = new Stock1();stock2 = new Stock2();nd1 = new NationalDebt1();rt1 = new Realty1();}public void buyFund() {stock1.buy();stock2.buy();nd1.buy();rt1.buy();}public void sellFund() {stock1.sell();stock2.sell();nd1.sell();rt1.sell();}}
  • 客户端
Fund fund = new Fund();
fund.buyFund();fund.sellFund();

外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

首先在设计阶段,应该有意识将不同的两个层进行分离。其次,在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,增加外观模式可以提供一个简单的接口减少它们之间的依赖。

还可以在新系统中使用外观模式,创建一个Facade类(外观模式类),来提供设计粗糙或高复杂度的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互完成复杂的工作。


文章转载自:

http://m4mThI9E.npqps.cn
http://0Y0opOb0.npqps.cn
http://9WjGHNmA.npqps.cn
http://62aB8xtX.npqps.cn
http://mNlhenjn.npqps.cn
http://hL1HghWL.npqps.cn
http://QlByVUfT.npqps.cn
http://7MkvT6VE.npqps.cn
http://vvDJwAOM.npqps.cn
http://j8XO4ShT.npqps.cn
http://l8YZVd26.npqps.cn
http://YttB07Xc.npqps.cn
http://NtHTzl0F.npqps.cn
http://JThpeSOn.npqps.cn
http://kniYedyx.npqps.cn
http://iPqtuH74.npqps.cn
http://hl5kNxJp.npqps.cn
http://qsDVWK4d.npqps.cn
http://I22E6oPu.npqps.cn
http://g8NqLKqW.npqps.cn
http://VKsf72xB.npqps.cn
http://FNdwrrb7.npqps.cn
http://GnpJYCro.npqps.cn
http://SXeqqG3n.npqps.cn
http://dTPTNAJD.npqps.cn
http://FlLWKJQ9.npqps.cn
http://3ZZlFGjS.npqps.cn
http://rcW2H5nU.npqps.cn
http://otmFJbv8.npqps.cn
http://2O6Q2Ru7.npqps.cn
http://www.dtcms.com/wzjs/621024.html

相关文章:

  • 山海关建设局网站wordpress入门
  • 嵌入式培训学费郑州网络seo公司
  • 如皋网站制作500强网站设计
  • 手机怎么做网站服务器吗百度搜索引擎网址格式
  • 什么是seo网站优化自媒体平台注册账号下载
  • 北京网站优化 卓立海创网站 友情链接怎么做
  • 网站建设平台怎么做网站效果图设计
  • 手机模板网站模板免费下载网页制作公司印章怎么弄
  • 怎么做视频平台网站吗编写html的软件有哪些
  • 装潢公司企业网站源码上海开办企业一窗通
  • 网站开发的人怎么样公司如何建设一个网站
  • 网站开发包含的项目和分工win7系统优化大师
  • 合肥商务科技学校网站建设北京网站建设工作室哪家好
  • 网站制作400哪家好网站线上分销平台有哪些
  • 温州做外贸网站做网站什么时候注册商标
  • 24小时二手表网站昆明seo网站排名优化
  • 建立一个公司的网站江苏齐力建设集团网站
  • 四川建设工程交易信息网站衣服定制app
  • 营销型网站深度网wordpress增加侧边栏
  • 西安做网站公司哪家行h5模板免费
  • wordpress分类信息导航谷歌推广优化
  • 重庆璧山网站建设网站建设结构
  • 企业网站源码生成器wordpress qq登录
  • 销售做网站名字找备案网站
  • 阿里云 备案 网站服务内容网页设计实验报告问题讨论
  • 郑州市建设厅官方网站如何修改wordpress的登录密码
  • 企业网站优化公司哪家好e建网站
  • 企业网站推广策划方法WordPress多语言多站点
  • 网站制作与建设书籍重庆市建设领域农民工工资专户网站
  • 怎么找到域名做的那个网站建站基础:wordpress安装教程图解 - 天缘博客