建造者模式(屌丝专用)

屌丝有了钱只是用来花的,那得有些霸气一点的房子吧!

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

适用性:

1、房子有不同的几个部分,能独立的安装

2、希望能建造出多个不同表象的房子

大家先看个类图

1.Builder

为创建一个Product对象的各个部件指定抽象接口。

2.ConcreteBuilder

实现Builder的接口以构造和装配该产品的各个部件。

定义并明确它所创建的表示。

提供一个检索产品的接口。

3.Director

构造一个使用Builder接口的对象。

4.Product

表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。

包含定义组成部件的类,包括将这些部件装配成最终产品的接口。

现在要建的是房子House,有个喜欢的家。

package creatingtype.builder;

/*
 * 房子
 */
public class House {

    // 地板
    private String floor;

    // 墙
    private String wall;

    // 屋顶
    private String housetop;

    public String getFloor() {
        return floor;
    }

    public void setFloor(String floor) {
        this.floor = floor;
    }

    public String getWall() {
        return wall;
    }

    public void setWall(String wall) {
        this.wall = wall;
    }

    public String getHousetop() {
        return housetop;
    }

    public void setHousetop(String housetop) {
        this.housetop = housetop;
    }

}

预定工程队(不同的工程队建不同的房子)

package creatingtype.builder;

/*
 * 工程队
 */
public interface HouseBuilder {

    //建造地板
    public void makeFloor();

    //建造墙
    public void makeWall();

    //建造屋顶
    public void makeHousetop();

    public House getHouse();
}

找个负责人

package creatingtype.builder;

public class HouseDirector {

    public void makeHouse(HouseBuilder builder) {
        //建造地板
        builder.makeFloor();
        //建造墙
        builder.makeWall();
        //建造屋顶
        builder.makeHousetop();
    }

}

负责人有了,如果你想建造别墅,确定别墅工程队

package creatingtype.builder;

/*
 * 别墅工程队
 */
public class BieShuBuilder implements HouseBuilder {

    House house = new House();

    public void makeFloor() {
        house.setFloor("别墅-->地板");
    }

    public void makeHousetop() {
        house.setHousetop("别墅-->房顶");
    }

    public void makeWall() {
        house.setWall("别墅-->墙");
    }

    public House getHouse() {
        return house;
    }

}

负责人有了,如果你想建造豪宅,确定豪宅工程队

package creatingtype.builder;

/*
 * 豪宅工程队
 */
public class HaoZhaiBuilder implements HouseBuilder {

    House house = new House();

    public House getHouse() {
        return house;
    }

    public void makeFloor() {
        house.setFloor("豪宅-->地板");
    }

    public void makeHousetop() {
        house.setHousetop("豪宅-->房顶");
    }

    public void makeWall() {
        house.setWall("豪宅-->墙");
    }

}

都好了,你可以开始修建自己想要的家了。

package creatingtype.builder;

// 建造者模式
public class MainClass {

    //    Builder模式也叫建造者模式或者生成器模式,
    //    是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之一,用来
    //    隐藏复合对象的创建过程,它把复合对象的创建
    //    过程加以抽象,通过子类继承和重载的方式,动
    //    态地创建具有复合属性的对象。

    public static void main(String[] args) {
        //工程队
        HouseBuilder builder = new HaoZhaiBuilder();
        //设计者
        HouseDirector director = new HouseDirector();
        director.makeHouse(builder);

        House house = builder.getHouse();
        System.out.println(house.getFloor());
        System.out.println(house.getWall());
        System.out.println(house.getHousetop());
    }

}

就这么简单,豪宅好了,你也可以建别墅哦!

建造者模式(屌丝专用)

时间: 2024-10-06 08:47:43

建造者模式(屌丝专用)的相关文章

设计模式--建造者模式(Builder)

最近又看了下建造者模式Builder,在网上找了很多文章,但是总感觉有一些问题. 有些示例明明很像一个工厂模式,还有些示例会导致具体建造者类无限膨胀,好像都不大适合使用这个模式.后来又对照GOF重新看了下,同时参考了http://www.cnblogs.com/happyhippy/archive/2010/09/01/1814287.html等文章,写下自己的理解. 1.定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.在以下情况使用建造者模式• 当创建复杂对象的算

Java设计模式学习笔记,三:建造者模式

建造者模式:实现了构建和装配的解耦,即对象的各个子组件单独构建,再进行装配,从而建造完整对象. 该模式适用于构建较为复杂的对象(多个子组件). 不同的构建者,使用相同的装配者,可以建造不同的对象实例.相同的构建者,不同的装配顺序,也可能建造出不同的对象实例. 举例: 汽车对象,子组件包括引擎.轮子和车体. Audi汽车构建者,负责制造Audi牌各个子组件.BMW汽车构建者,负责制造BMW牌各个子组件.然后将子组件统一送至汽车装配者的生产线中进行组装,最后会建造出Audi牌汽车和BMW汽车. 以下

【2016-10-16】【坚持学习】【Day7】【建造者模式】

建造者模式: 一个复杂的对象由多个分部件组成.一个复杂对象 class Product { private string partA; //定义部件,部件可以是任意类型,包括值类型和引用类型 private string partB; private string partC; public string PartA { get { return partA; } set { partA = value; } } public string PartB { get { return partB;

设计模式那点事读书笔记(3)----建造者模式

建造者模式: 建造者模式是将复杂的对象构造进行分离,使得每个部件完成比较独立的工作.通过抽象类,接口来约束建造的过程. 解决什么问题: 当生成的产品对象内部具有复杂的结构. 当复杂对象需要与表示分离,可能需要创建不同的表示时. 当需要向客户隐藏产品内部结构表现时. UML: 代码结构: 商品的实体: package com.demo.builder.model; /** * 产品实体 */ public class MobilePackage { private float money; pri

java/android 设计模式学习笔记(10)---建造者模式

这篇博客我们来介绍一下建造者模式(Builder Pattern),建造者模式又被称为生成器模式,是创造性模式之一,与工厂方法模式和抽象工厂模式不同,后两者的目的是为了实现多态性,而 Builder 模式的目的则是为了将对象的构建与展示分离.Builder 模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程.一个复杂的对象有大量的组成部分,比如汽车它有车轮.方向盘.发动机.以及各种各样的小零件,要将这些部件装配成一辆汽车,这个装配过

建造者模式

上一次学习了工厂模式,这一学习了建造者模式,对于建造者来说,抽象出来的建筑流程是确定的,往往建筑一座楼房包括下面的步骤:(1)打桩,建立基础(2)建立框架等.建造者模式的本质和建造楼房是一致的:即流程不变,但每个流程实现的具体细节则是经常变化的.建造者模式的好处就是保证了流程不会变化,流程即不会增加.也不会遗漏或者产生流程次序错误,这是非常重要的. 这次代码构思如下: 接下来是代码展示: Client: using System;using System.Collections.Generic;

小菜学设计模式——建造者模式

背景 不要小看炒菜这件小事上,想要上一道佳肴,那是需要循规蹈矩,步步小心的.我相信你肯定在外面吃过没放盐的快餐,吃过放多了盐的快餐.....既然炒菜是一个如此复杂的过程,又必须循规蹈矩,那为什么不给他一个死规定呢?如果谁没有按照规定做事,就进行对应的提醒警告.这就是建造者模式的由来,限制规则步骤,但是开发规则细节.比如说盛菜之前必须放盐,那么规定一定要放盐,具体放多少自己论情况而定. 1.使用意图 如果你需要将一个复杂对象的构建与它的表示(构建具体过)分离,使得同样的构建过程可以创建不同的表示的

建造者模式(Builder)

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

【设计模式】建造者模式

1.定义 1.1 标准定义 建造者模式( Builder Pattern) 也叫做生成器模式, 其定义如下: Separate the construction of a complex object from its representation so that the same construction process can create different representations.( 将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示. ) 1.2  通用