加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

设计模式之建造模式

发布时间:2020-12-13 20:06:14 所属栏目:PHP教程 来源:网络整理
导读:建造模式是对象的创建模式,建造模式可以将1个产品的内部表象和产品的生产进程分割开来,从而是1个建造进程生成具有不同的内部表象的产品 对象。 建造模式的结构以下类图所示: 在 这个系统中,终究产品Product只有两个零件,即part1和part2,相应的建造方法
建造模式是对象的创建模式,建造模式可以将1个产品的内部表象和产品的生产进程分割开来,从而是1个建造进程生成具有不同的内部表象的产品

对象。

建造模式的结构以下类图所示:

这个系统中,终究产品Product只有两个零件,即part1和part2,相应的建造方法也有两个:buildPart1()和buildPart2(),同时呢本模式触及到4个角色,分别为:

*抽象建造者(Builder)角色:给出1个抽象接口,以规范产品对象的各个组成部份的建造,1般而言,此接口独立于利用程序的商业逻辑。

*具体建造者(Concrete Builder)角色:担负这个角色的是与利用程序紧密相干的1些类,它们在利用程序调用下创建产品的实例。

*导演者(Director)角色:担负这个角色的类调用具体建造者角色以创建产品对象,应当指出的是,导演者角色并没有产品类的具体知识。

真正具有产品类的具体知识是具体建造者角色。

*产品(Product)角色:产品(Product)便是建造中的复杂对象,1般来讲,1个系统中会有多于1个的产品类,而且这些产品类其实不1定有共同

的接口,而完全可以是不相干联的。

以下给出这个系统比较简单的示意性源码:

Director:

package builder; public class Director { private Builder builder; /** * 产品构造方法,负责调用各个零件建造方法 */ public void construct(){ builder=new ConcreteBuilder(); builder.buildPart1(); builder.buildPart2(); builder.retrieveResult(); //continue with other code } }
Builder:

package builder; public abstract class Builder { /** * 产品的零件建造方法 */ public abstract void buildPart1(); /** * 产品零件建造方法 */ public abstract void buildPart2(); /** * 产品返还方法 */ public abstract Product retrieveResult(); }
ConcreteBuilder:

package builder; public class ConcreteBuilder extends Builder { private Product product=new Product(); /** * 产品零件建造方法 */ public void buildPart1() { //build the first part of the part } /** * 产品零件建造方法 */ public void buildPart2() { //build the second part of the product } /** * 产品返还方法 */ public Product retrieveResult() { return product; } }
Product:

package builder; public class Product { //Anything pertaining to this product }
这些源码中,有许多的方法并没有实现,和Product类中并没有任何属性或方法,但其实不影响其浏览性,在具体的建造进程中,才会出现对应的产品

和相应的实现进程。

简单的建造模式,就是如此。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读