Java建造者模式的示例分析


这篇文章主要介绍“Java建造者模式的示例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java建造者模式的示例分析”文章能帮助大家解决问题。

定义

建造者模式(Builder Pattern),又叫生成器模式,是一种对象构建模式 它可以将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同表现的对象。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可 以构建它们,用户不需要知道内部的具体构建细节。

案例

需求

女生每天化妆,假如只需要做发型,香水,衣服,并要求按照发型——》香水——》衣服的顺序进行,用代码实现

方案一

定义女生抽象类

/** * 女生抽象类 * @author:liyajie * @createTime:2022/2/16 10:20 * @version:1.0 */public abstract class AbstractWoman {    //设计发型    public abstract void buildHairstyle();    //使用香水    public abstract void buildPerfume();    //设计衣服    public abstract void buildClothing();}

定义女生实现类

/** * 女生实现类 * @author:liyajie * @createTime:2022/2/16 10:21 * @version:1.0 */public class Woman extends AbstractWoman {    @Override    public void buildHairstyle() {        System.out.println("马尾造型");    }    @Override    public void buildPerfume() {        System.out.println("古龙香水");    }    @Override    public void buildClothing() {        System.out.println("海澜之家");    }}

测试类

/** * 测试类 * @author:liyajie * @createTime:2022/2/15 16:35 * @version:1.0 */public class Test {    public static void main(String[] args) {        Woman woman = new Woman();        woman.buildHairstyle();        woman.buildPerfume();        woman.buildClothing();        System.out.println(woman);    }}

查看测试结果

方案二

定义女生类

/** * 女生化妆 * @author:liyajie * @createTime:2022/2/15 15:40 * @version:1.0 */@Datapublic class WomanNew {    // 发型    private String hairstyle;    // 香水    private String perfume;    // 服装    private String clothing;    //化完妆后的展示效果    public void show(){        System.out.println("化妆完成");    }}

定义化妆师抽象类

/** * 化妆师抽象类 * @author:liyajie * @createTime:2022/2/15 15:58 * @version:1.0 */public abstract class AbstractDresserNew {    protected Woman woman = new Woman();    //设计发型    public abstract void buildHairstyle();    //使用香水    public abstract void buildPerfume();    //设计衣服    public abstract void buildClothing();    public Woman getWoman(){        return woman;    }}

定义具体的化妆师类

/** * 具体的化妆师 * @author:liyajie * @createTime:2022/2/15 16:17 * @version:1.0 */public class DresserNew extends AbstractDresserNew{    @Override    public void buildHairstyle() {        woman.setHairstyle("马尾造型");    }    @Override    public void buildPerfume() {        woman.setPerfume("古龙香水");    }    @Override    public void buildClothing() {        woman.setClothing("海澜之家");    }}

定义化妆总设计师类(指挥者)

/** * 化妆总设计师(指挥者) * @author:liyajie * @createTime:2022/2/15 16:22 * @version:1.0 */public class DresserManage {    private AbstractDresser abstractDresser;    public DresserManage(AbstractDresser abstractDresser){        this.abstractDresser = abstractDresser;    }    public Woman makeUp(){        abstractDresser.buildHairstyle();        abstractDresser.buildPerfume();        abstractDresser.buildClothing();        return abstractDresser.getWoman();    }}

定义测试类

/** * 测试类 * @author:liyajie * @createTime:2022/2/15 16:35 * @version:1.0 */public class TestNew {    public static void main(String[] args) {        DresserNew dresser = new DresserNew();        DresserManage dresserManage = new DresserManage(dresser);        WomanNew womanNew = dresserManage.makeUp();        System.out.println(womanNew);    }}

查看结果

对比分析

  • 方案一:普通的实现方式,采用了继承抽象类的方式进行实现,耦合性非常高,不易扩展

  • 方案二:建造者模式,将女生和化妆师化妆进行了解耦合,并且易扩展,更换化妆师也很方便;并且有一个化妆总设计师作为指挥者的角色,可以方便的控制化妆的顺序,符合开闭原则

总结

建造者模式的优势:

将产品本身与产品的创建过程解耦合

扩展性很高,很方便的增加或者替换具体建造者

方便用程序来控制产品的创建过程以及顺序

指挥者类针对抽象建造者编程,系统扩展方便,符合开闭原则

注意点

建造者模式创建的产品一般组成部分类似,如果产品差异性非常大,不适合了,合理利用

如果产品内部变化复杂,导致系统非常庞大,权衡

关于“Java建造者模式的示例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注主机评测网行业资讯频道,小编每天都会为大家更新不同的知识点。


上一篇:Linux常用命令file怎么用

下一篇:Linux中disown命令怎么用


Copyright © 2002-2019 测速网 www.inhv.cn 皖ICP备2023010105号
测速城市 测速地区 测速街道 网速测试城市 网速测试地区 网速测试街道
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!

热门搜索 城市网站建设 地区网站制作 街道网页设计 大写数字 热点城市 热点地区 热点街道 热点时间 房贷计算器