河北省住房和城乡建设厅网站主页,织梦网站logo修改,企业宣传片短视频制作,全球速卖通注册条件模板模式#xff0c;定义了一个模板#xff0c;模板内容通过子类实现模板的抽象方法去添加。 就类似学校需要建一个新校区#xff0c;新校区有多栋宿舍#xff0c;找了多个施工方#xff0c;每个施工方负责一栋宿舍楼。 各个施工方都有自己的想法#xff0c;建造的宿舍楼…模板模式定义了一个模板模板内容通过子类实现模板的抽象方法去添加。 就类似学校需要建一个新校区新校区有多栋宿舍找了多个施工方每个施工方负责一栋宿舍楼。 各个施工方都有自己的想法建造的宿舍楼各不相同当然从使用上来说是可以的毕竟可以用就行只是后期装修维护不方便。 现在为了后期便于管理维护学习先找设计院设计图纸所有的施工方都按照图纸上面的来建造图纸大体的框架是相同的 但楼栋的某些具体细节各不相同各个施工方根据自身情况调节。 可以看做是施工方根据图纸模板建造但某些具体细节仍然由施工方来确定。 这样在定义和实现之间添加一个模板使实现不那么随心所欲而是在固定框架中去完善。 例如html文档文档头部和尾部的格式基本是固定的只是body部分的内容不同。 我们就可以构建一个包含html文档头部和尾部的模板body部分根据具体需求填充内容即可。 首先我们是要绘制html页面,所以先定义一个接口里面有一个构建页面的方法。 public interface PageUtil {public String buildPage();
} html模板类这就是在定义和实现之间的模板加了这一层后使实现更规范这就相当于施工图纸。 子类始终是按照该类的HTML模板去构建页面只是body部分的内容不同 body部分通过实现了 abstract void appendBody方法的子类重写该方法确定body部分内容。 public abstract class AbstractPageUtil implements PageUtil{private StringBuffer stringBuffer new StringBuffer();Override//固定格式的模板子类始终是按照这个模板来构建HTML页面的public String buildPage() {stringBuffer.append(!Doctype html\r\nhtml\r\n head\r\n meta charset\UTF-8\\r\n titleInsert title here/title\r\n /head\r\n body);//html头部appendBody(stringBuffer);//子类实现该方法填充具体内容stringBuffer.append(/body\r\n/html);//html尾部return stringBuffer.toString();}//子类填充bodyabstract void appendBody(StringBuffer stringBuffer) ;
} 子类继承模板类实现appendBody方法即可模板类的子类都是按照这个模式生成html文档。 只是body的内容根据实际需求有所不同 接下来就是继承AbstractPageUtil 的子类实现父类的appendBody方法填充不同的内容。 public class HtmlPageUtil extends AbstractPageUtil{Overridevoid appendBody(StringBuffer stringBuffer) {//实现父类的方法设置body部分内容模板依然是父类的模板stringBuffer.append(hello world!);}public static void main(String[] args) {//测试HtmlPageUtil htmlPageUtil new HtmlPageUtil();System.out.println(htmlPageUtil.buildPage());}} 运行结果!Doctype html
html
head
meta charsetUTF-8
titleInsert title here/title
/head
bodyhello world!/body
/html 参考资料 https://www.cnblogs.com/zuoxiaolong/p/pattern10.html https://www.runoob.com/design-pattern/template-pattern.html转载于:https://www.cnblogs.com/huang-changfan/p/11064098.html