美文网首页
设计模式(九)建造者模式

设计模式(九)建造者模式

作者: Active_Loser | 来源:发表于2019-06-23 00:52 被阅读0次

    总章目录,设计模式(一)基本介绍

    一、简介

    建造者模式(Builder Pattern) 又名生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。
    建造者模式 是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。
    UML类图:
    1、抽象建造者(Builder):抽象接口或类,以规范产品对象的各个组成成分的建造。
    2、具体建造者(ConcreteBuilder):1.实现抽象建造者Builder所声明的接口,给出一步一步地完成创建产品实例的操作。2.在建造过程完成后,提供产品的实例。
    3、指导者(Director):担任这个角色的类调用具体建造者角色以创建产品对象。
    4、产品(Product):产品便是建造中的复杂对象。

    优点:

    1. 客户端不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象。
    2. 每一个具体建造者都相对独立,而与其他的具体建造者无关,因此可以很方便地替换具体建造者或增加新的具体建造者, 用户使用不同的具体建造者即可得到不同的产品对象 。
    3. 可以更加精细地控制产品的创建过程 。将复杂产品的创建步骤分解在不同的方法中,使得创建过程更加清晰,也更方便使用程序来控制创建过程。
    4. 增加新的具体建造者无须修改原有类库的代码,指挥者类针对抽象建造者类编程,系统扩展方便,符合 “开闭原则”

    缺点:

    1. 建造者模式所创建的产品一般具有较多的共同点,因此其使用范围受限。
    2. 产品的内部变化复杂,会导致系统变得很庞大。

    二、实现

    以下方式为简单的实现,通常会在create时赋值,赋值时仅保存变量

    public class Summoner {
        private String shoes;
        private String arms;
        private String name;
    
        //省略 get  set
    
        public static class Builder {
    
            Summoner summoner;
    
            public void Builder(){
                  summoner = new Summoner();
            }
    
            public Builder setArms(String arms) {
                summoner.setArms(arms);
                return this;
            }
    
            public Builder setShoes(String shoes) {
                summoner.setShoes(shoes);
                return this;
            }
    
            public Builder setName(String name) {
                summoner.setName(name);
                return this;
            }
    
            public Summoner build() {
                return summoner;
            }
        }
    }
    
    public class client {
        public static void main(String[] args) {
            Summoner summoner = new Summoner.Builder()
                    .setName("武器大师")
                    .setArms("三相之力")
                    .setShoes("水银鞋");
            System.out.println(summoner.toString());
        }
    }
    

    相关文章

      网友评论

          本文标题:设计模式(九)建造者模式

          本文链接:https://www.haomeiwen.com/subject/ehjbqctx.html