设计模式学习之路-建造者模式

建造者模式,使我们经常提到一个模式,而且很多地方都用到了,比如AlertDialog创建使用Builder。这也是建造者模式的体现,那么我们平时在写代码的时候也可以使用这个方式,来梳理代码逻辑。

建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

建造者的UML类图


基本代码

absract class Builder{
 public abstract void BuilderPartA();
 public abstract void BuilderPartB();
 public abstract Product GetResult();
}

<pre name="code" class="java">class ConcreteBuilder1 extends Builder{
private Product product = new Product(); 
@Override
 public void BuilderPartA(){
  product.add("A");
 }
@Override
 public void BuilderPartB(){
  product.add("B");
 }

@Override
 public Product GetResult(){
  return product;
 }
}

 
</pre><pre name="code" class="java">class Director{
 public void Construct(Builder builder){
  builder.BuilderA();
  builder.BuilderB();
 }
}
class Product {
 List<String>parts =  new ArrayList<String>();
 public void add(String a){
  parts.add(a);
 }
 
public void show(){
 for(String : parts){
  Log.i("TAG",parts.get(i));
 }
 
}

}
class ConcreteBuilder2 extends Builder{
private Product product = new Product(); 
@Override
 public void BuilderPartA(){
  product.add("X");
 }
@Override
 public void BuilderPartB(){
  product.add("Y");
 }

@Override
 public Product GetResult(){
  return product;
 }
}

客户端

static void main(){
 Director d = new Director();
 Builder b1 = new ConcreteBuilder1();
 Builder b2 = new ConcreteBuilder2();
 d.construct(b1);
 Product p1 = b1.Getresult();
 p1.show();
}

 我们以建造小人为例子。先创建一个抽象小人父类,里面有创建头,身体,手,脚等抽象方法。然后在新建一个具体的胖小人实体类和一个瘦小人实体类。新建一个Director指挥者,在里面有个创建人类的方法,调用抽象类的方法,这样只要通过指挥者创建人类,客户端不需要创建人类的复杂过程,只需要调用指挥者类的创建方法就可以了。 

看到这儿不禁让我想起了一个相似的模式,那就是策略模式。感觉有点异曲同工之妙。

这里有个造小人的代码例子,很简单。想看呢就下下来看看。

git:https://github.com/SingleShu/BuilderModel




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值