理解java设计模式之建造者模式

网友投稿 185 2023-07-22


理解java设计模式之建造者模式

建造者模式(Builder Pattern)主要用于“分步骤构建一个复杂的对象”,在这其中“分步骤”是一个稳定的算法,而复杂对象的各个部分则经常变化。因此, 建造者模式主要用来解决“对象部分”的需求变化。 这样可以对对象构造的过程进行更加精细的控制。

package com.shejimoshi.create.Builder;

/**

* 功能:意图是将一个tPAMXfLFOY复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

* 适用性:

* 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时

* 当构造过程必须允许被构造的对象有不同的表示时

*/

public abstract class PersonBuilder

{

//绘画一个人物需要使用到的工具

protected String tool1;

protected String tool2;

public PersonBuilder(String t1, String t2)

{

this.tool1 = t1;

this.tool2 = t2;

}

//绘画头

public abstract void buildHead();

//画身体

public abstract void buildBody();

//画左脚右脚

public abstract void buildArmLeft();

public abstract void buildArmRight();

//画左手右手

public abstract void buildLegLeft();

public abstract void buildLegRight();

}

我们的抽象生成器派生出相应的子类,用来构造相应的实际使用类型

package com.shejimoshi.create.Builder;

/**

* 功能:意图是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

* 适用性:

* 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时

* 当构造过程必须允许被构造的对象有不同的表示时

*/

public class PersonThinBuilder extends PersonBuilder

{

public PersonThinBuilder(String t1, String t2)

{

super(t1, t2);

}

@Override

public void buildHead()

{

System.out.println("画出一个瘦子的头");

}

@Override

public void buildBody()

{

System.out.println("画出一个瘦子的身体");

}

@Override

public void buildArmLeft()

{

System.out.println("画出瘦子的左臂");

}

@Override

public void buildArmRight()

{

System.out.println("画出瘦子的右臂");

}

@Overrihttp://de

public void buildLegLeft()

{

System.out.println("画出瘦子左腿");

}

@Override

public void buildLegRight()

{

System.out.println("画出瘦子的右腿");

}

}

package com.shejimoshi.create.Builder;

/**

* 功能:意图是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

* 适用性:

* 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时

* 当构造过程必须允许被构造的对象有不同的表示时

*/

public class PersonFatBuilder extends PersonBuilder

{

public PersonFatBuilder(String t1, String t2)

{

super(t1, t2);

}

@Override

public void buildHead()

{

System.out.println("画出一个胖子的头");

}

@Override

public void buildBody()

{

System.out.println("画出一个胖子的身体");

}

@Override

public void buildArmLeft()

tPAMXfLFOY{

System.out.println("画出胖子的左臂");

}

@Override

public void buildArmRight()

{

System.out.println("画出胖子的右臂");

}

@Override

public void buildLegLeft()

{

System.out.println("画出胖子左腿");

}

@Override

public void buildLegRight()

{

System.out.println("画出胖子的右腿");

}

}

我们的生成器交给指挥者来实现创建的动作

package com.shejimoshi.create.Builder;

/**

* 功能:创建人物的指挥者

*/

public class PersonDirector

{

private PersonBuilder pb;

//传递相应的人物创建模型

public PersonDirector(PersonBuilder pber)

{

this.pb = pber;

}

//创建一个人

public void createPerson()

{

pb.buildHead();

pb.buildBody();

pb.buildArmLeft();

pb.buildArmRight();

pb.buildLegLeft();

pb.buildLegRight();

}

}

测试案例:

package com.shejimoshi.create.Builder;

/**

* 功能:客户端程序

*/

public class Test

{

//创建相应的人物

public static void create(PersonBuilder pb)

{

//借助参数传过来的模型创建相应的对象

PersonDirector pd = new PersonDirector(pb);

pd.createPerson();

}

public static void main(String []args)

{

PersonThinBuilder ptb = new PersonThinBuilder("图像工具", "画笔");

create(ptb); //创建一个瘦子

System.out.println("==============================================================");

PersonFatBuilder pfb = new PersonFatBuilder("图像工具", "画笔");

create(pfb);

}

}

运行结果:

画出一个瘦子的头

画出一个瘦子的身体

画出瘦子的左臂

画出瘦子的右臂

画出瘦子左腿

画出瘦子的右腿

==============================================================

画出一个胖子的头

画出一个胖子的身体

画出胖子的左臂

画出胖子的右臂

画出胖子左腿

画出胖子的右腿

以上就是java建造者模式,希望对大家学习java程序设计有所帮助。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:浅析Java基于Socket的文件传输案例
下一篇:java设计模式系列之装饰者模式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~