java设计模式--Builder设计模式

在学习Builder设计模式的时候 ,发现 这个Builder 和 工厂设计模式十分相似 ,我甚至说不出来他们之间有着什么样的区别,但可以肯定的是 ,如果我们需要产生一个复杂的对象,这个对象中包含多个其他的对象,以及属性等 。

那么我们应该使用Builder 模式 ,Builder模式减少了 对象部件之间的耦合度 ,所谓的耦合度 也就是对象部件之间的联系 。

其实说的再多也不如自己认真的分析一段代码 并且自己着手实现一个Builder原型 。

下面一段代码实现的功能 是产生一个 MyProduct 对象 这MyProduct对象中包含了 PartA PartB PartC三个对象 ,我们不是像以往的一样,将所有操作在 MyProduct 完成 。

看下面操作吧 可能比我说的更好理解: 下面是结构

java设计模式--Builder设计模式

class MyProduct //我们的产品类 包含三个部件 。 PartA PartB PartC
{
private PartA a ;
private PartB b ;
private PartC c ;
MyProduct(PartA a,PartB b ,PartC c)
{
this.a=a;
this.b=b;
this.c=c;
}
public void showPart()
{
System.out.println(a.getClass().getName());
System.out.println(b.getClass().getName());
System.out.println(c.getClass().getName());
}
}
class PartA{}
class PartB{}
class PartC{}
interface Builder //Builder接口
{
public void buildPartA() ;
public void buildPartB() ;
public void buildPartC() ;
public MyProduct getResult(); //返回产品
}

class MyBuilderTest implements Builder
{
private PartA a =null;
private PartB b =null;
private PartC c =null;
@Override
public void buildPartA() {
if(a==null)
this.a= new PartA() ;
else
return ;
}
@Override
public void buildPartB() {
if(b==null)
this.b= new PartB() ;
else
return ;
}
@Override
public void buildPartC() {
if(c==null)
this.c= new PartC() ;
else
return ;
}
@Override
public MyProduct getResult() {
return new MyProduct(a,b,c);
}
}
class Director //一个代理
{

private MyBuilderTest t ;
Director(MyBuilderTest t)
{
this.t=t ;
}
public void build()
{
t.buildPartA() ;
t.buildPartB() ;
t.buildPartC() ;
}
}
class MyBuilder
{
public static void main(String []agrs)
{
MyBuilderTest test =new MyBuilderTest(); // 我们的构建器
Director d=new Director(test) ; //Director类
d.build() ; //通过Director构建
MyProduct product=(MyProduct)test.getResult() ; //调用Builer的 getResult返回结果
product.showPart() ; //产品的方法
}
}

你可能感兴趣的:(java设计模式)