`

【转】设计模式——建造者模式(Builder)

 
阅读更多

工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性。

其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到的。

★产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量:

class Product {

private String name;

private String type;

public void showProduct(){

System.out.println("名称:"+name);

System.out.println("型号:"+type);

}

public void setName(String name) {

this.name = name;

}

public void setType(String type) {

this.type = type;

}

}

★抽象建造者:引入抽象建造者的目的,是为了将建造的具体过程交与它的子类来实现。这样更容易扩展。一般至少会有两个抽象方法,一个用来建造产品,一个是用来返回产品。

abstract class Builder {

public abstract void setPart(String arg1, String arg2);

public abstract Product getProduct();

}

★建造者:实现抽象类的所有未实现的方法,具体来说一般是两项任务:组建产品;返回组建好的产品。

class ConcreteBuilder extends Builder {

private Product product = new Product();

 

public Product getProduct() {

return product;

}

 

 

public void setPart(String arg1, String arg2) {

product.setName(arg1);

product.setType(arg2);

}

}

★导演类:负责调用适当的建造者来组建产品,导演类一般不与产品类发生依赖关系,与导演类直接交互的是建造者类。一般来说,导演类被用来封装程序中易变的部分。

public class Director {

private Builder builder = new ConcreteBuilder();

public Product getAProduct(){

builder.setPart("宝马汽车","X7");

return builder.getProduct();

}

public Product getBProduct(){

builder.setPart("奥迪汽车","Q5");

return builder.getProduct();

}

}

public class Client {

public static void main(String[] args){

Director director = new Director();

Product product1 = director.getAProduct();

product1.showProduct();

 

 

Product product2 = director.getBProduct();

product2.showProduct();

}

}

★测试:

public class Test {

 

public static void main(String[] args) {

Builder builder = new Builder();

builder.produceMailSender(10);

}

}

首先,建造者模式的封装性很好。使用建造者模式可以有效的封装变化,在使用建造者模式的场景中,一般产品类和建造者类是比较稳定的,因此,将主要的业务逻辑封装在导演类中对整体而言可以取得比较好的稳定性。

其次,建造者模式很容易进行扩展。如果有新的需求,通过实现一个新的建造者类就可以完成,基本上不用修改之前已经测试通过的代码,因此也就不会对原有功能引入风险。

总体上,建造者模式仅仅只比工厂模式多了一个“导演类”的角色。

在建造者模式的类图中,假如把这个导演类看做是最终调用的客户端,那么图中剩余的部分就可以看作是一个简单的工厂模式了。

--------------------- 

作者:panzihao_beijing 

来源:CSDN 

原文:https://blog.csdn.net/panzihao_beijing/article/details/80416764 

版权声明:本文为博主原创文章,转载请附上博文链接!

分享到:
评论

相关推荐

    设计模式——建造者模式

    建造者模式是一种结构型设计模式,它允许我们分步骤创建复杂对象,而无需暴露构建过程的内部细节。这种模式在Java编程中非常常见,尤其是在处理需要多种构建方式或需要隔离对象构造过程的场景。 建造者模式的核心...

    Java 设计模式-建造者模式(Builder)Android讲解

    总结来说,Java的设计模式——建造者模式在Android开发中扮演着重要角色,它帮助我们构造复杂对象,提供了一种模块化、易扩展的代码结构,提高了代码的可读性和可维护性。通过理解并熟练运用建造者模式,开发者可以...

    设计模式——可复用面向对象软件的基础(1)

    在《设计模式——可复用面向对象软件的基础》这本书中,作者Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides(合称GoF)首次提出了23种面向对象设计模式。这些模式涵盖了不同设计场景,如创建型模式、...

    设计模式——可复用面向对象软件的基础(3)

    《设计模式——可复用面向对象软件的基础》是IT领域中的经典著作,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大师合著,他们因此被誉为GoF(Gang of Four)。这本书提出了面向对象设计的23种...

    Python设计模式之建造者模式实例详解

    本文实例讲述了Python设计模式之...设计模式——建造者模式 建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以常见不同的表示 特性: 指挥者(Director) 指挥 建造者(Builder) 建造 Produ

    设计模式与泡MM——设计模式入门教程

    ### 设计模式与泡MM——设计模式入门教程 #### 一、创建型模式 ##### 1、FACTORY(工厂模式) 工厂模式的核心在于定义了一个创建对象的接口,但允许子类决定实例化哪一个类。工厂模式让类的实例化延迟到子类中...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    1. **创建型模式**:包括单例(Singleton)、工厂方法(Factory Method)、抽象工厂(Abstract Factory)、建造者(Builder)和原型(Prototype)。这些模式关注对象的创建过程,使得代码更加灵活,易于管理和扩展。...

    《设计模式--基于C#的工程化实现及扩展》.(王翔)_《0528》.rar

    创建型模式关注对象的创建过程,如单例模式(Singleton)、工厂模式(Factory)和建造者模式(Builder)等,它们提供了一种灵活的方式来创建和管理对象,避免了硬编码和紧密耦合。结构型模式关注如何将对象和类组合...

    python 建造者模式(示例)

    设计模式——建造者模式建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示特性: 指挥者(Director) 指挥 建造者(Builder) 建造 Product建造者模式是在创建复杂对象的...

    设计模式代码——c#

    3. 建造者模式(Builder) 4. 工厂方法模式(Factory Method) 5. 原型模式(Prototype) 结构型: 6. 适配器模式(Adapter Pattern) 7. 桥接模式(Bridge Pattern) 8. 装饰模式(Decorator Pattern) 9. ...

    设计模式C#实例——大洋系统

    "设计模式C#实例——大洋系统"这个主题涵盖了五个经典的设计模式:抽象工厂(Abstract Factory)、适配器(Adapter)、桥接(Bridge)、建造者(Builder)以及责任链(Chain of Responsibility)。接下来,我们将...

    设计模式源码.zip

    最后,"设计模式——基于C#的工程化实现及扩展_示例说明.txt"文件提供了对源码的解释和应用场景的描述,这对于初学者来说是极其宝贵的资源。它可以帮助你理解每个模式的意图、适用场景以及如何在C#代码中正确地引入...

    【设计模式】- 生成器模式(Builder)(csdn)————程序.pdf

    生成器模式,也称为建造者模式,是一种设计模式,用于创建复杂对象,它允许你按照一系列步骤来构造对象,而这些步骤可以通过不同的实现来产生不同形式的对象。生成器模式的核心在于分离了对象的构造过程和表示细节,...

    JavaScript设计模式之建造者模式介绍

    建造者模式(Builder Pattern)是一种创建型设计模式,它提供了一种创建对象的最佳方式。在建造者模式中,一个复杂对象的构造被分解为多个简单的步骤,并且允许使用相同的构造过程创建不同的表示。这种方式非常适用...

    X-gen PPT下载——《研磨设计模式》 实战

    1. **创建型模式**:包括单例模式(Singleton)、工厂模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。这些模式关注于对象的创建过程,以确保代码的灵活...

    设计模式PPT---25种设计模式详解

    4. 建造者模式(Builder):将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 5. 对象池模式(Object Pool):通过对象池管理对象的生命周期,避免频繁创建和销毁对象的开销。 结构型模式...

    design-pattern-java.pdf

    对象的克隆——原型模式(四) 建造者模式-Builder Pattern 复杂对象的组装与创建——建造者模式(一) 复杂对象的组装与创建——建造者模式(二) 复杂对象的组装与创建——建造者模式(三) 七个结构型模式 七个...

    HeadFirst设计模式PPT

    《HeadFirst设计模式》是一本深受开发者欢迎的书籍,它以独特、易理解的方式介绍了软件设计中的重要概念——设计模式。设计模式是经验丰富的开发者在解决常见问题时总结出的最佳实践,它们为软件设计提供了可复用的...

    设计模式 让你轻松理解设计模式,提高开发效率

    建造者模式(Builder) 建造者模式主要用于构建复杂对象,特别是在构建过程中需要经过多个步骤的情况。该模式将对象的构造过程与其表示分离,允许同一构造过程创建不同的表示。文章中提到了“说句话”的例子,即...

Global site tag (gtag.js) - Google Analytics