关于建造者模式的个人理解

作为创建型的模式,肯定是创建对象等时候用的.

联系到实际,就是一个javaBean 如果想获取一个完整的对象, 需要为属性挨个赋值.

这样如果连续创建多个对象的时候, 重复代码 及代码量明显太多了

这时候就应该抽象出来一个 创建对象的接口,或者抽象类  每一类对象一个实现类.

在创建一个控制类. 里面调用接口的每一个方法, 同时返回创建好的对象.

eg:   手机套餐  多种套餐:   套餐包含 通话时间 和流量

javaBean :

public Class SJtc {

  String thsj;// 通话时间

  String ll; 流量

  get();

  set();

}

正常如果构建套餐. 直接 Sjtc sjtc = new Sjtc(); sjtc.setThsj()... 这样写

接下来换一个实现方式:

public abstrac class SjcBuilder {

  Sjtc sjtc = new Sjtc();

  abstract void setThsj();

  abstract void setLl();

getSJtc{

  return this.sjtc;  

}

}

// 具体套餐实现类:

public ASjtc extends SjcBuilder {

  void setThsj(){

  sjtc.setThsj("123123");

  }

  void setLl(){

  sjtc.setLl("123123");

  }  

}

再写一个控制类调用 抽象类所有方法;

puclic class control{

SjcBuilder builder;

public control(buider){

this.builder = builder;

}

Sjrc getTc(){

builder.setThsj();

builder.setLl();

return builder;

}

}

这样调用的时候 这样就好了

control control = new control(new ASjtc());

control.getTc();

调用者不用关心 a套餐都需要什么?

把抽象类 换成接口是一样的.  创建对象可以放在builde里面.

但是注意 使用完之后置空

     public void createDoppelganger(String name){
        doppelganger = new Doppelganger(name);
    }

    public Doppelganger getDoppelganger(){
        try {
            return doppelganger;
        }finally{
            doppelganger = null;
        }
    }

总体而言 建造者模式 跟工厂模式相比, 多了一个控制类, 用来控制对象的创建. 同时建造者模式 是关注的创建的过程.为了减少中间创建对象代码

在实际工作中 完全是有利用价值的,但是因为例子中 各个实现类的参数都是已知的. 在实际中可能是变化的, 这样可以在java bean加一个方法.来处理这些,只要规则一置就好了

时间: 2024-10-11 18:29:31

关于建造者模式的个人理解的相关文章

深入理解JavaScript系列(27):设计模式之建造者模式

介绍 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成:由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定.如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着需求改变而改变?这就是要说的建造者模式. 建造者模式可以将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示.也就是说如果我们用了建造者模式,那么用户就需要指定需

三分钟理解“建造者模式”——设计模式轻松掌握

"建造者模式"生活中的例子: 肯德基做汉堡的过程都是有严格的规范的,不管是麦香鸡腿堡还是新奥尔良烤鸡腿堡,他们的制作步骤都是有严格规定,做汉堡的人既不能多做一步,也不能少做一步.对于不同的汉堡来说,虽然每一步加的料所有不同,但做汉堡的步骤都是一样的.因为有了对做汉堡过程的严格控制,因而全国所有的肯德基店做出来的汉堡味道都是一样的. 这些汉堡就是一个个对象,刚被创建出来的时候它就是两片面包片,没有任何内容:然后我们把它扔到一个流水线上,这个流水线会按照指定的步骤往汉堡对象中逐步添加材料:

23种设计模式----------建造者模式

建造者模式:像是模板方法模式的升级.也叫生成器模式.将一个复杂对象的构造与它的表示分离,使得同样的构建过程可以创建不同的表示.其实就是创建一大类的东西, 但是具体又有些差异. 在建造者模式中,一般有四个角色: 1,Product产品类. 该类一般实现了模板方法模式. 2,Builder抽象的建造者. 规范产品的组建,一般是由子类实现. 3,ConcreteBuilder具体的建造者. 实现抽象类定义的所有方法,并且可以返回一个组建好的具体对象. 4,Director导演类(一般是包涵多种具体产品

设计模式(十六):建造者模式

一.概述 建造者模式很容易让人想到建房子,不管建刚需房.改善房还是别墅,它们都离不开地基.柱子.层面和墙体这些组成部分,建筑工人就是把这些组成部分一个个建起来,最后连成一体建出一栋栋楼房. 来看看建造者模式的定义,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.建房子的过程都是相似的,但可以建出形形色色的房子. 二.结构类图 三.应用实例 我们用制造自行车为例子讲解建造者模式,自行车由车架.轮胎.脚踏等部件组成,如下图所示.自行车制造公司就是把这些零部件组装起来. 自行

C++设计模式之建造者模式(三)

4.引入钩子方法的建造者模式 建造者模式除了逐步构建一个复杂产品对象外,还可以通过Director类来更加精细地控制产品的创建过程,例如增加一类称之为钩子方法(HookMethod)的特殊方法来控制是否对某个buildPartX()的调用,也就是判断产品中某个部件是否需要被建造.钩子方法的返回类型通常为boolean类型,方法名一般为isXXX(),钩子方法定义在抽象建造者类中.在抽象建造者类中提供钩子方法的默认实现,具体建造者类如果不需要建造某个部件,则该建造者类覆盖抽象建造者类的钩子方法.

螃蟹学PHP设计模式之建造者模式

2.建造者模式 螃蟹今天要学习建造者模式了,昨天的适配器记得还是很清楚的.对于建造者模式,螃蟹的理解是你有10部iphone手机要充电,假设充电器额定电压都是220v,但是外电压不稳定,可能是220v,也可能是240v,或是300v,这个时候怎么办,可行的方法是购置一个家用变压器,把充电器都连在变压器上,不需要直接连在外电网上,无论外电压如何变化,只需要操作变压器即可.这个比喻可能有些牵强,不过还是能够说明建造者模式的用途,就是原对象可能是可变的,包括接收的参数或是方法等,但是如果我们已经在程序

创建型模式之建造者模式

概述 建造者模式是较为复杂的创建型模式,它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离,客户端无须知道复杂对象的内部组成部分与装配方式,只需要知道所需建造者的类型即可.它关注如何一步一步创建一个的复杂对象,不同的具体建造者定义了不同的创建过程,且具体建造者相互独立,增加新的建造者非常方便,无须修改已有代码,系统具有较好的扩展性. 定义 建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.建造者模式是一种对象创建型

设计模式总结篇系列:建造者模式(Builder)

关于建造者模式网上有很多文章,也有些不同的理解.在此结合网上其他文章对建造者模式进行总结. 总体说来,建造者模式适合于一个具有较多的零件(属性)的产品(对象)的创建过程.根据产品创建过程中零件的构造是否具有一致的先后顺序,可以将其分为如下两种形式. 一.通过Client.Director.Builder和Product形成的建造者模式 Builder负责Product类对象的具体过程构建,Director负责指导Build,要求Builder按照其指定的顺序去完成Produt的构造.最后通过Bu

设计模式--建造者模式(Builder)

最近又看了下建造者模式Builder,在网上找了很多文章,但是总感觉有一些问题. 有些示例明明很像一个工厂模式,还有些示例会导致具体建造者类无限膨胀,好像都不大适合使用这个模式.后来又对照GOF重新看了下,同时参考了http://www.cnblogs.com/happyhippy/archive/2010/09/01/1814287.html等文章,写下自己的理解. 1.定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.在以下情况使用建造者模式• 当创建复杂对象的算