开头有建造者然后制造各种工厂来生产军火女王争夺资源打败敌人 工厂是可

建造者模式学习以及与工厂模式的区别&&
设计模式之禅学习——建造者模式
一、建造者模式是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
二、建造者模式与工厂模式的区别:
& & & & & & &工厂模式一般都是创建一个产品,注重的是把这个产品创建出来就行,只要创建出来,不关心这个 & & & & &产品的组成部分。从代码上看,工厂模式就是一个方法,用这个方法就能生产出产品。
& & & & & & &建造者模式也是创建一个产品,但是不仅要把这个产品创建出来,还要关系这个产品的组成细节, & & & & &组成过程。从代码上看,建造者模式在建造产品时,这个产品有很多方法,建造者模式会根据这些相同 & & & & &方法但是不同执行顺序建造出不同组成细节的产品。
& & & & & & 可以比较两个模式的example代码,一比较就会比较出来,工厂模式关心整体,建造者模式关心细节。
三、建造者模式代码
1、建造者模式用于建造产品,其产品类一般都是一个模板(模板设计模式),所以一定会有产品类:
package com.wang.builderP
* 产品类,通常实现了模板方法设计模式
* @author HeJW
public class Product {
//独立业务处理,一般会有多个业务方法,
//根据这些方法不同实现细节,
//体现出建造者模式的用处
public void doSomething(){
System.out.println(&&);
2、抽象建造者,这个建造者会定义产品的不同部分以及其他产品定义的细节问题,然后根据这些细节建造产品:
package com.wang.builderP
* 抽象建造者
* @author HeJW
public abstract class Builder {
//设置产品的不同部分,以获得不同产品
public abstract void setPart();
//建造产品
public abstract Product builderProduct();
3、具体的建造者,在具体的建造者中,一定会有一个产品的对象,通过对这个产品对象的组成部分定义,建造出具体不同细节的产品:
package com.wang.builderP
* 具体建造者
* @author HeJW
public class ConcerteProduct extends Builder {
private Product product = new Product();
//设置产品零件
public void setPart() {
* 产品类内的逻辑处理
public Product builderProduct() {
4、导演类,这个类就是建造出可能出现的、具有不同细节的产品的建造者的集合,只要在客户端有导演类的实例,并且告诉导演类我要什么样的产品,导演类就会返回这个产品:
package com.wang.builderP
* @author HeJW
public class Director {
private Builder builder = new ConcerteProduct();
//构造不同的产品
public Product getProduct(){
* 设置不同的零件,产生不同的产品
builder.setPart();
return builder.builderProduct();
在客户端建造产品时:
package com.wang.builderP
public class App {
public static void main(String[] args) {
Director productDirector = new Director();
Product p = productDirector.getProduct();
最后,只要记住,建造者模式是 适合建造具体细节的产品的设计模式就可以了。。。。。。
附上设计模式之禅这本书的建造者模式的实例代码(是以建造car为例的)
被转藏 : 1次
被转藏 : 1次2265人阅读
Android设计模式(14)
建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
建造者模式包含如下角色:
Builder:抽象建造者
ConcreteBuilder:具体建造者
Director:指挥者
Product:产品角色
建造者模式的结构中还引入了一个指挥者类Director,该类的作用主要有两个:
一、它隔离客户与生产过程;
二、它负责控制产品的生成过程。指挥者针对抽象建造者编程,客户端只需要知道具体建造者的类型,无须关心产品对象的具体组装过程,即可通过指挥者类调用建造者的相关方法,返回一个完整的产品对象。
建造者模式与抽象工厂模式的比较:
与抽象工厂模式相比, 建造者模式返回一个组装好的完整产品 ,而抽象工厂模式返回一系列相关的产品,这些产品位于不同的产品等级结构,构成了一个产品族。
在抽象工厂模式中,客户端实例化工厂类,然后调用工厂方法获取所需产品对象,而在建造者模式中,客户端可以不直接调用建造者的相关方法,而是通过指挥者类来指导如何生成对象,包括对象的组装过程和建造步骤,它侧重于一步步构造一个复杂对象,返回一个完整的对象。
如果将抽象工厂模式看成汽车配件生产工厂 ,生产一个产品族的产品,那么建造者模式就是一个汽车组装工厂 ,通过对部件的组装可以返回一辆完整的汽车。
外观模式和中介者模式比较:
外观模式处理的是类之间复杂的依赖关系,中介者模式处理的是对象之间复杂的交互关系
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:452347次
积分:4293
积分:4293
排名:第6324名
原创:135篇
转载:103篇
评论:42条
(18)(1)(9)(8)(11)(10)(14)(4)(1)(2)(20)(1)(3)(6)(1)(8)(9)(8)(4)(6)(3)(5)(24)(1)(6)(1)(17)(23)(18)(3)设计模式之建造者模式与工厂方法模式 - 推酷
设计模式之建造者模式与工厂方法模式
& & 建造者模式:
& & & & & & & &
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
& & 建造者模式结构图:
& & & & & &
&产品类(Product):
一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。
& & & & & 具体建造者(ConcreteBuilder):实现Builder接口,构造和装配各个部件。即组建产品和返回组建好的产品。
& & & & & 抽象建造者(Builder):是为创建一个Product对象的各个部件指定的抽象接口。
这样更容易扩展。一般至少会有两个抽象方法,一个用来建造产品,一个是用来返回产品。
& & & & & 指挥者(Director):构建一个使用Builder接口的对象,
负责调用适当的建造者来组建产品,导演类一般不与产品类发生依赖关系,与导演类直接交互的是建造者类。一般来说,导演类被用来封装程序中易变的部分。
& & & & & & &
1、需要生成的产品对象有复杂的内部结构。&
& & & & & & &2、需要生成的产品对象的属性相互依赖,建造者模式可以强迫生成顺序。&
& & & & & & &3、&在对象创建过程中会使用到系统中的一些其它对象,这些对象在产品对象的创建过程中不易得到。
& & &优越性:
&&&&&& & & & & & & & & & & & &&
使用建造者模式可以使客户端不必知道产品内部组成的细节,如例子中我们就不需要关心每一个具体的模型内部是如何实现的,产生的对象类型就是CarModel。
建造者独立,容易扩展
& & & & & & & & & & & & & & & &
Builder之间是相互独立的,与其它的Builder无关,对系统的扩展非常有利。
便于控制细节风险
& & & & & & & & & & &模式所建造的最终产品更易于控制:由于具体的建造者是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任何影响。
& & &举例:
在电脑城装机总有这样的经历。我们到了店里,先会有一个销售人员来询问你希望装的机器是怎么样的配置,他会给你一些建议,最终会形成一张装机单。和客户确定了装机配置以后,他会把这张单字交给提货的人,由他来准备这些配件,准备完成后交给装机技术人员。技术人员会把这些配件装成一个整机交给客户。
& & & & & & & & &不管是什么电脑,它总是由CPU、内存、主板、硬盘以及显卡等部件构成的,并且装机的过程总是固定的:
& & & & & & & & & & & &把主板固定在机箱中
& & & & & & & & & & & &把CPU安装到主板上
& & & & & & & & & & & &把内存安装到主板上
& & & & & & & & & & & &把硬盘连接到主板上
& & & & & & & & & & & &把显卡安装到主板上
& & & & & & & & &但是,每台兼容机的部件都各不相同的,有些配置高一点,有些配置低一点,这是变化点。对于装机技术人员来说,他不需要考虑这些配件从哪里来的,他只需要把他们组装在一起了,这是稳定的装机流程。要把这种变化的配件和稳定的流程进行分离就需要引入Builder模式。
& & & & & & & & & 在这里:销售人员就属于指挥者,提货人员属于抽象建造者,而又技术人员属于具体建造者,最终生产出的电脑就是建造者模式中的产品类了。
&与工厂模式的区别: & & &
& & & & &&
在之前的博客中,已经介绍过工厂模式,可以看出,建造者模式仅仅只比工厂模式多了一个“指挥类”的角色。在建造者模式图中,假如把这个指挥类看做是最终调用的客户端,那么图中剩余的部分就可以看作是一个简单的工厂模式了。
& & & & & & & & & 与工厂模式相比,建造者模式一般用来创建更为复杂的对象,因为对象的创建过程更为复杂,因此将对象的创建过程独立出来组成一个新的类——指挥类。也就是说,工厂模式是将对象的全部创建过程封装在工厂类中,由工厂类向客户端提供最终的产品;而建造者模式中,建造者类一般只提供产品类中各个组件的建造,而将具体建造过程交付给导演类。由导演类负责将各个组件按照特定的规则组建为产品,然后将组建好的产品交付给客户端。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致}

我要回帖

更多关于 军火女王 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信