欢迎来到天天文库
浏览记录
ID:59491611
大小:233.00 KB
页数:37页
时间:2020-09-13
《第5章建造者模式ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章建造者模式(Builder)(生成器模式)导出数据的应用框架对于导出数据的应用框架,通常在导出数据上会有一些约定的方式,比如导出成:文本格式、数据库备份形式、Excel格式、Xml格式等等假如现在有如下的要求:导出的文件,不管什么格式,都分成三个部分,分别是文件头、文件体和文件尾在文件头部分,需要描述如下信息:分公司或门市点编号、导出数据的日期,对于文本格式,中间用逗号分隔在文件体部分,需要描述如下信息:表名称、然后分条描述数据。对于文本格式,表名称单独占一行,数据描述一行算一条数据,字段间用逗号分隔
2、。在文件尾部分,需要描述如下信息:输出人不用模式的解决方案不管是输出成文本文件,还是输出到XML文件,在实现的时候,步骤基本上都是一样的,都大致分成了如下四步:先拼接文件头的内容然后拼接文件体的内容再拼接文件尾的内容最后把拼接好的内容输出出去成为文件存在问题1)构建每种输出格式的文件内容的时候,都会重复这几个处理步骤,应该提炼出来,形成公共的处理过程2)今后可能会有很多不同输出格式的要求,这就需要在处理过程不变的情况下,能方便的切换不同的输出格式的处理解决思路及方案构建每种格式的数据文件的处理过程,应该和具
3、体的步骤实现分开,这样就能够复用处理过程,而且能很容易的切换不同的输出格式建造者模式建造者模式构建过程独立出来,建造者模式中把它称为指导者,由它来指导装配过程,但是不负责每步具体的实现具体实现每步的对象,在建造者模式中称这些实现对象为建造者(生成器)建造者模式UML类图产品(Product)角色:被构建的复杂对象,包含多个组成部件建造者(Builder)角色:定义创建一个Product对象所需的各个部件的操作接口,该接口中一般声明两类方法,一类方法是buildPartX(),它们用于创建复杂对象的各个部件;
4、另一类方法是getResult(),它们用于返回复杂对象具体建造者(ConcreteBuilder)角色:实现了Builder接口,实现各个部件的具体构造和装配方法,定义并明确它所创建的复杂对象,也可以提供一个方法返回创建好的复杂产品对象指挥者(Director)角色:又称为导演类,它负责安排复杂对象的建造次序,指挥者与抽象建造者之间存在关联关系,可以在其construct()建造方法中调用建造者对象的部件构造与装配方法,完成复杂对象的建造。客户端一般只需要与指挥者进行交互,在客户端确定具体建造者的类型,并
5、实例化具体建造者对象(也可以通过配置文件和反射机制),然后通过指挥者类的构造函数或者Setter方法将该对象传入指导者类中//建造者的接口定义publicinterfaceBuilder{publicvoidbuildPart();}建造者模式示例代码//具体的建造者的实现publicclassConcreteBuilderimplementsBuilder{privateProductresultProduct;//获取生成器最终构建的产品对象publicProductgetResult(){return
6、resultProduct;}publicvoidbuildPart(){//构建某个部件的功能处理}}//被构建的产品对象的接口publicinterfaceProduct{//定义产品的操作}//指导者publicclassDirector{privateBuilderbuilder;publicDirector(Builderbuilder){this.builder=builder;}publicvoidconstruct(){//通过使用生成器接口来构建最终的产品对象builder.buildPa
7、rt();}}示例//产品(Product)角色publicclassVehicle{protectedStringm_strType;protectedStringm_strFrame;protectedStringm_strEngine;protectedStringm_strWheels;protectedStringm_strDoors;Vehicle(StringstrType){m_strType=strType;}publicvoidShow(){System.out.println("---
8、----------------");System.out.println("Vehicletype:"+m_strType);System.out.println("Frame:"+m_strFrame);System.out.println("Engine:"+m_strEngine);System.out.println("Wheels:"+m_strWheels);System.out.println("
此文档下载收益归作者所有