欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

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

来源: javaer 分享于  点击 40194 次 点评:138

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 建造者模式内容请搜索3672js教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持3672js教程!

    您可能感兴趣的文章:
    • Java 超详细讲解设计模式之中的建造者模式
    • Java中常用的设计模式之建造者模式详解
    • Java 深入理解创建型设计模式之建造者模式
    • Java设计模式之建造者模式的示例详解
    • 深入理解Java设计模式之建造者模式
    • JAVA设计模式----建造者模式详解
    • java设计模式:建造者模式之生产线
    • java设计模式--建造者模式详解
    相关栏目:

    用户点评