如何设计模式实现处理?

摘要:模板模式,定义了一个模板,模板内容通过子类实现模板的抽象方法去添加。 就类似学校需要建一个新校区,新校区有多栋宿舍,找了多个施工方,每个施工方负责一栋宿舍楼。 各个施工方都有自己的想法,建造的宿舍楼各不相同,当然从使用上来说是可以的(毕竟可
模板模式,定义了一个模板,模板内容通过子类实现模板的抽象方法去添加。 就类似学校需要建一个新校区,新校区有多栋宿舍,找了多个施工方,每个施工方负责一栋宿舍楼。 各个施工方都有自己的想法,建造的宿舍楼各不相同,当然从使用上来说是可以的(毕竟可以用就行),只是后期装修维护不方便。 现在为了后期便于管理维护,学习先找设计院设计图纸,所有的施工方都按照图纸上面的来建造,图纸大体的框架是相同的, 但楼栋的某些具体细节各不相同,各个施工方根据自身情况调节。 可以看做是施工方根据图纸模板建造,但某些具体细节仍然由施工方来确定。 这样在定义和实现之间添加一个模板,使实现不那么随心所欲,而是在固定框架中去完善。 例如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\n<html>\r\n" + "<head>\r\n" + "<meta charset=\"UTF-8\">\r\n" + "<title>Insert title here</title>\r\n" + "</head>\r\n" + "<body>");//html头部 appendBody(stringBuffer);//子类实现该方法,填充具体内容 stringBuffer.append("</body>\r\n</html>");//html尾部 return stringBuffer.toString(); } //子类填充body, abstract void appendBody(StringBuffer stringBuffer) ; } 子类继承模板类,实现appendBody方法即可,模板类的子类都是按照这个模式生成html文档。 只是body的内容根据实际需求有所不同, 接下来就是继承AbstractPageUtil 的子类,实现父类的appendBody方法,填充不同的内容。
阅读全文