第十三章 建造者模式

建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时适用的模式。

import java.util.LinkedList;
import java.util.List;

/**
 * Created by hero on 16-4-3.
 */
public class Product {
    private List<String> parts = new LinkedList<>();

    public void add(String part) {
        parts.add(part);
    }

    public void show() {
        for (String p : parts) {
            System.out.print(p + "\t");
        }
        System.out.println();
    }
}
/**
 * Created by hero on 16-4-3.
 */
public abstract class Builder {
    public abstract void buildPartA();

    public abstract void buildPartB();

    public abstract Product getResult();
}
/**
 * Created by hero on 16-4-3.
 */
public class ConcreteBuilder1 extends Builder {
    private Product product = new Product();

    @Override
    public void buildPartA() {
        product.add("a");
    }

    @Override
    public void buildPartB() {
        product.add("b");
    }

    @Override
    public Product getResult() {
        return product;
    }
}
/**
 * Created by hero on 16-4-3.
 */
public class ConcreteBuilder2 extends Builder {
    private Product product = new Product();

    @Override
    public void buildPartA() {
        product.add("x");
    }

    @Override
    public void buildPartB() {
        product.add("y");
    }

    @Override
    public Product getResult() {
        return product;
    }
}
/**
 * Created by hero on 16-4-3.
 */
public class Director {
    public void Construct(Builder builder) {
        builder.buildPartA();
        builder.buildPartB();
    }
}
public class Main {

    public static void main(String[] args) {
        Director director = new Director();
        ConcreteBuilder1 concreteBuilder1 = new ConcreteBuilder1();
        ConcreteBuilder2 concreteBuilder2 = new ConcreteBuilder2();
        Product product = null;
        director.Construct(concreteBuilder1);
        product = concreteBuilder1.getResult();
        product.show();
        director.Construct(concreteBuilder2);
        product = concreteBuilder2.getResult();
        product.show();
    }
}
时间: 2024-07-29 20:08:32

第十三章 建造者模式的相关文章

大话设计模式第十三章---建造者模式比较

<?php class Product { private $_parts = array(); public function add(string $part) { $this->_parts[] = $part; } public function show() { echo "\n PRODUCT CREATEING...<br/>"; foreach ($this->_parts as $part) { echo $part; echo &quo

设计模式之第11章-建造者模式(Java实现)

设计模式之第11章-建造者模式(Java实现) “那个餐厅我也是醉了...”“怎么了?”“上菜顺序啊,竟然先上甜品,然后是冷饮,再然后才是菜什么的,无语死了.”“这个顺序也有人这么点的啊.不过很少就是了,正常来说如果是中餐的话,都是先凉菜再热菜,然后是汤,最后是一些甜品什么的.西餐呐,先有头盘,用来开胃的,然后是汤(感觉好怪的说),再然后是副菜.主菜.蔬菜类.甜品.饮料来着.然后法国嘛就是blablabla...”(作者已被众人拖走.“让我说完啊,就剩几个国家了~啊~~”).咳咳,题归正转.你问

第4章 建造者模式(Builder Pattern)

原文 第4章 建造者模式(Builder Pattern) 定义 将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式. 实用范围 1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时. 2 当构造过程必须允许被构造的对象有不同表示时. 角色 在这样的设计模式中,有以下几个角色: 1 builder:为创建一个产品对象的各个部件指定抽象接口. 2 ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部

大话设计模式C++实现-第13章-建造者模式

一.UML图 二.概念 建造者模式(Builder):将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示. 三.说明 角色: (1)Builder:是为创建一个Product对象的各个部件指定的抽象接口. (2)ConcreteBuilder:是具体创建者,实现Builder接口,构造和装配各个部件. (3)Product:具体的产品角色. (4)Director:指挥者,他是构建一个使用Builder接口的对象. Q:什么时候使用建造者模式? A:它主要是用于创建一些复杂

第二十三章-命令模式

命令模式(Command): 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤销的操作. 烧烤程序 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include<vector> #include<string> #include<ctime> using namespace std; class Barbecuer { public: void

第6章 创建型模式—建造者模式

1. 建造者(Builder,或生成器)模式的定义 (1)将一个复杂对象构建与它的表示分离,使得同样的构建过程可以创建不同的表示. ①上述提到的“构建”是指构造过程的算法(即构造顺序,位于director类中),“表示”指生成各部件的具体细节(或叫实现,位于Builder或其子类中). ②由指导者(director)来指导构造过程,而建造者(builder)负责每步的对象的具体实现和组装各部件. ③指导者可以重用构建过程,而生成器是可以被切换的具体实现. (2)建造者模式的结构和说明 ①Buil

Java二十三设计模式之------建造者模式

一.建造者模式(Builder) 工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到的.我们看一下代码: 还和前面一样,一个Sender接口,两个实现类MailSender和SmsSender.最后,建造者类如下: public class Builder { private List<Sender> list = new ArrayList&l

建造者模式(Builder)

定义 (本人在阅读完本书的中英两个版本之后发现对建造者模式十窍懂了九窍,所以直接去网上搜别人的分析了,所以本章大部分是根据网上的资料收集来的,此外,代码例子表示本书的例子不合适,也换了,所以本章和这本书关系不大.) 建造者模式是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.建造者模式最重要的两个角色:抽象建造者(Builder)和指导者(Director),其中建造者知道怎么(How)去建造产品,而指导者知道去制造什么(What)产品,建造者模式用建房子的例子来说明

第十三章 进程、线程类的实现

                                        第十三章   进程.线程类的实现         多线程是指在一个进程内可以同时运行多个任务,每个任务由一个单独的线程来完成.线程是进程运行的基本单位,一个进程中可以同时运行多个线程.如果程序被设置为多线程方式,可以提高程序运行的效率和处理速度. 多个线程共用一个进程的资源:进程的调度.切换是在10ms的"时钟滴答"定时中断程序里进行.如果一个线程获得CPU,那么在下一个Tick到来前:是不可能被切换出去的