Java 设计模式以虹猫蓝兔的故事讲解建造者模式

目录
  • 什么是建造者模式
    • 优点
    • 缺点
    • 知识点
  • 建造者模式实现
    • 丹药
    • 抽象丹方
    • 九转仙丹丹方
    • 太虚化神丹丹方
    • 神医豆豆
    • 测试
  • 总结

什么是建造者模式

建造者(Builder)模式的定义: 指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。

优点

1、封装性好,构建和表示分离。

2、扩展性好,各个具体的建造者相互独立,有利于系统的解耦。

3、客户端不必知道产品内部组成的细节,建造者可以对创建过程逐步细化,而不对其它模块产生任何影响,便于控制细节风险。

缺点

1、产品的组成部分必须相同,这限制了其使用范围。

2、如果产品的内部变化复杂,如果产品内部发生变化,则建造者也要同步修改,后期维护成本较大。

知识点

建造者(Builder)模式和工厂模式的关注点不同:建造者模式注重零部件的组装过程,而工厂方法模式更注重零部件的创建过程,但两者可以结合使用。

建造者模式实现

案例: 神医豆豆炼丹

产品角色(Product):丹药

抽象建造者(Builder):抽象丹方

具体建造者(Concrete Builder):具体丹方

指挥者(Director):神医豆豆

神医豆豆炼制九转仙丹和太虚化神丹

注意:为了省事这里说的丹方内容只有丹药名字和效果,并没有材料之类的。

丹药

丹药类声明炼丹的名称和效果两个属性

public class Dan {
    /* cailiao 丹药的名称
           danhuo 丹药的效果*/
    private String name;
    private String xiaoguo;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getXiaoguo() {
        return xiaoguo;
    }

    public void setXiaoguo(String xiaoguo) {
        this.xiaoguo = xiaoguo;
    }
}

抽象丹方

抽象类,new一个丹药对象,声明两个抽象方法分别是给丹药命名和赋予丹药效果,还有一个生成丹药的方法。

//抽象丹方
abstract class DanFang {
    Dan dan = new Dan();

    public abstract void name();

    public abstract void xiaoguo();

    public Dan getDan() {
        return dan;
    }

}

九转仙丹丹方

具体丹方类继承丹方类,并且实现两个抽象方法。

//九转仙丹丹方
public class JiuZhuan extends DanFang {

    @Override
    public void name() {
        dan.setName("九转仙丹");
    }

    @Override
    public void xiaoguo() {
        dan.setXiaoguo("原地成仙");
    }
}

太虚化神丹丹方

具体丹方类继承丹方类,并且实现两个抽象方法。

//太虚化神丹丹方
public class Taixu extends DanFang {
    @Override
    public void name() {
        dan.setName("太虚化神丹");
    }

    @Override
    public void xiaoguo() {
        dan.setXiaoguo("意念化神");
    }
}

神医豆豆

声明一个丹方属性,一个有参构造方法,一个炼丹方法。

public class DouDou {
    private final DanFang danLu;

    public DouDou(DanFang danLu) {
        this.danLu = danLu;
    }

    //炼丹方法
    public Dan lian() {
        //放入材料
        danLu.name();
        //释放丹火
        danLu.xiaoguo();
        //成丹
        return danLu.getDan();
    }
}

测试

炼制两个丹药。

public class Demo {
    public static void main(String[] args) {
        //炼制九转仙丹
        //new一个九转仙丹的丹方
        DanFang jiu = new JiuZhuan();
        //把丹方给豆豆
        DouDou dou = new DouDou(jiu);
        //炼丹生成丹药
        Dan dan = dou.lian();
        System.out.printf("丹药名称:%s   丹药效果:%s", dan.getName(), dan.getXiaoguo());

        System.out.println();

        //炼制太虚化神丹
        //new一个九转仙丹的丹方
        DanFang tai = new Taixu();
        //把丹方给豆豆
        DouDou dous = new DouDou(tai);
        //炼丹生成丹药
        Dan dans = dous.lian();
        System.out.printf("丹药名称:%s   丹药效果:%s", dans.getName(), dans.getXiaoguo());
    }
}

总结

神医豆豆有一套炼制丹药的方流程,所以不论丹方如何变化,但是炼丹流程都一样。想要炼制其他丹药只需要一个丹方就可以完成。

到此这篇关于Java 设计模式以虹猫蓝兔的故事讲解建造者模式的文章就介绍到这了,更多相关Java 建造者模式内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 深入理解Java设计模式之建造者模式

    目录 一.什么是建造者模式 二.建造者模式的应用场景 三.建造者模式的优缺点 四.工厂模式和建造者模式的对比 五.建造者模式的实现 六.总结 一.什么是建造者模式 建造者模式也称生成器模式 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示(依赖倒转) 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量.在本类图中,产品类是一个具体的类,而非抽象类.实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们

  • Java 深入理解创建型设计模式之建造者模式

    1.提出问题 假如说,我们需要建房子:这一过程为打桩.砌墙.封顶.房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是要求不要相同的.3)请编写程序,完成需求. 传统的想法应该就是下面这个类图的形式.. 那么这种写法的优点就是 比较好理解,简单易操作. 缺点则是:设计的程序结构,过于简单,没有设计缓存层对象,程序的扩展和维护不好.也就是说,这种设计方案,把产品(即: 房子)和创建产品的过程(即: 建房子流程)封装在一起,耦合性增强了. 解决方案:  将产品和产品建造过程解耦 

  • java设计模式--建造者模式详解

    目录 引例 一般解法 代码: AbstractHouse(房子) Bungalow(平房) Villa (别墅) 客户端调用 建造者模式 建造者模式解法 代码: House类(Product产品) HouseBuilder类(Builder抽象建造者) 3.Bungalow类(ConcreteBuilder具体建造者A) 4.Villa类(ConcreteBuilder具体建造者B) 5.HouseDirector类(Director指挥者) 客户端调用 总结 引例 需求:建造房子,建造过程包括

  • Java 超详细讲解设计模式之中的建造者模式

    目录 1.什么是建造者模式? 2.建造者模式的定义 3.建造者模式的优缺点 4.建造者模式的结构 5.建造者模式代码演示 6.建造者模式的应用场景 7.建造者模式和工厂模式的区别 1.什么是建造者模式? 我们知道在软件开发过程中有时需要创建一个很复杂的对象,通常由多个子部件按一定的步骤组合而成. 例如,比如我们在自己在组装一台计算机的时候,需要有 CPU.主板.内存.硬盘.显卡.机箱.显示器.键盘.鼠标等部件组装而成的.比如学校需要采购100台计算机,学校不可能自己把零件买过来自己组装,肯定是告

  • Java中常用的设计模式之建造者模式详解

    目录 优点 缺点 使用场景 一.实现方式 二.实现方式 1.引入依赖 2.实现 三.测试 总结 优点 1.建造者独立,易扩展. 2.便于控制细节风险. 缺点 1.产品必须有共同点,范围有限制. 2.如内部变化复杂,会有很多的建造类. 使用场景 1.需要生成的对象具有复杂的内部结构. 2.需要生成的对象内部属性本身相互依赖. 一.实现方式 package com.asurplus.common.builder.style1; public class UserInfo { private Stri

  • Java设计模式之建造者模式的示例详解

    目录 定义 案例 需求 方案一 方案二 对比分析 总结 建造者模式的优势: 注意点 定义 建造者模式(Builder Pattern),又叫生成器模式,是一种对象构建模式 它可以将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同表现的对象.建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可 以构建它们,用户不需要知道内部的具体构建细节. 案例 需求 女生每天化妆,假如只需要做发型,香水,衣服,并要求按照发型——>香水——>衣服的顺序进行,

  • java设计模式:建造者模式之生产线

    目录 什么是建造者模式 建造者模式中的角色 产品角色(Product) 抽象建造者(Builder) 具体建造者角色(ConcreteBuilder) 导演者角色(Director) 最终测试 总结 什么是建造者模式 建造者模式( Builder Pattern )是设计模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 实用范围: 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时.当构造过程必须允许被构造的对象有不同表示时. 设计模式和编程

  • Java 设计模式以虹猫蓝兔的故事讲解建造者模式

    目录 什么是建造者模式 优点 缺点 知识点 建造者模式实现 丹药 抽象丹方 九转仙丹丹方 太虚化神丹丹方 神医豆豆 测试 总结 什么是建造者模式 建造者(Builder)模式的定义: 指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式.它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成.它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的. 优点 1.封装性好,构建和表示分离. 2.扩展性好,各个具体的建造者相

  • Java 设计模式以虹猫蓝兔的故事讲解原型模式

    目录 什么是原型模式 优点 缺点 应用场景 浅克隆 代码实现 总结 深克隆 代码实现 总结 什么是原型模式 原型(Prototype)模式的定义如下: 用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象.在这里,原型实例指定了要创建的对象的种类.用这种方式创建对象非常高效,根本无须知道对象创建的细节.例如,Windows 操作系统的安装通常较耗时,如果复制就快了很多.在生活中复制的例子非常多,这里不一一列举了. 优点 1.Java 自带的原型模式基于内存二进制流的

  • Java设计模式以虹猫蓝兔的故事讲解代理模式

    目录 什么是代理模式 优点 缺点 知识点 代理模式实现 卖酒 干娘的酒馆 大奔的酒摊 测试 总结 模式: 代理模式 案例: 大奔代干娘卖酒 什么是代理模式 代理模式的定义: 由于某些原因需要给某对象提供一个代理以控制对该对象的访问.这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介. 优点 1.代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用: 2.代理对象可以扩展目标对象的功能: 3.代理模式能将客户端与目标对象分离,在一定程度上降低了系统

  • Java设计模式以虹猫蓝兔的故事讲解桥接模式

    目录 什么是桥接模式 优点 缺点 知识点 桥接模式实现 颜色 黄色 红色 裙子 长裙 短裙 测试 总结 模式: 桥接模式 案例: 蓝兔宫主买裙子 什么是桥接模式 桥接(Bridge)模式的定义如下: 将抽象与实现分离,使它们可以独立变化.它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度. 优点 1.抽象与实现分离,扩展能力强 2.符合开闭原则 3.符合合成复用原则 4.其实现细节对客户透明 缺点 由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,能正确地识

  • Java 设计模式以虹猫蓝兔的故事讲解单例模式

    目录 专栏介绍 本期介绍 什么是单例模式 懒汉式一 正常模式 单例模式 为什么线程不安全呢 懒汉式二 为什么线程安全呢 饿汉式 懒汉式与饿汉式的区别 专栏介绍 [JAVA长虹键法] 主要讲了23种设计模式,本系列专栏会以虹猫蓝兔七侠传的故事为例来给大家详细分析所有模式,希望能给大家带来帮助! 本期介绍 模式: 单例模式 案例: 虹猫蓝兔造剑 什么是单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的

  • Java 设计模式以虹猫蓝兔的故事讲解简单工厂模式

    目录 专栏介绍 本期介绍 什么是简单工厂模式 优点 缺点 应用场景 简单工厂的实现 专栏介绍 本系列专栏会以虹猫蓝兔七侠传的故事为例来给大家详细分析所有模式,希望能给大家带来帮助! 本期介绍 模式: 简单工厂模式 案例: 一个天外陨石(抽象产品),三把剑(产品), 一个铸剑师(工厂). 虹猫蓝兔莎莉分别找铸剑师造了三把剑. 什么是简单工厂模式 工厂模式的定义: 定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中.这满足创建型模式中所要求的"创建与使用相分离"

  • Java 设计模式以虹猫蓝兔的故事讲解单例模式

    目录 专栏介绍 本期介绍 什么是单例模式 懒汉式一 正常模式 单例模式 为什么线程不安全呢 懒汉式二 为什么线程安全呢 饿汉式 懒汉式与饿汉式的区别 专栏介绍 [JAVA长虹键法] 主要讲了23种设计模式,本系列专栏会以虹猫蓝兔七侠传的故事为例来给大家详细分析所有模式,希望能给大家带来帮助! 本期介绍 模式: 单例模式 案例: 虹猫蓝兔造剑 什么是单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的

  • Java设计模式以虹猫蓝兔的故事讲解适配器模式

    目录 什么是适配器模式 优点 缺点 知识点 适配器模式实现 类适配器 长虹剑气 火舞旋风剑气 火晶石 测试 对象适配器 长虹剑气 火舞旋风剑气 火晶石 测试 总结 模式: 适配器模式 案例: 虹猫利用火晶石催发火舞旋风剑气 什么是适配器模式 适配器模式(Adapter)的定义如下: 将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作.适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的

  • Java设计模式以虹猫蓝兔的故事讲解装饰器模式

    目录 什么是装饰器模式 优点 缺点 知识点 装饰器模式实现 七侠 虹猫 加料 加盐 加孜然 测试 总结 模式: 装饰器模式 案例: 黑小虎抓住了七侠,把虹猫烤了 什么是装饰器模式 装饰器(Decorator)模式的定义: 指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式. 优点 1.装饰器是继承的有力补充,比继承灵活,在不改变原有对象的情况下,动态的给一个对象扩展功能,即插即用 2.通过使用不用装饰类及这些装饰类的排列组合,可以实现不同效

  • Java设计模式之备忘录模式_动力节点Java学院

    定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样就可以将该对象恢复到原先保存的状态 类型:行为类 类图: 我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态.比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行代码),我们希望返回删除前的状态,便可以使用Ctrl+Z来进行返回.这时我们便可以使用备忘录模式来实现. 备忘录模式的结构 发起人:记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和

随机推荐