zoukankan      html  css  js  c++  java
  • 构建者模式(Builder Pattern)

      构建者模式:将一个复杂对象的构造与它的表示分离,使同样的构造可以构造出不同的表示,这样的设计模式被称为构建者模式。

      构建者模式主要需要以下几个部分组成:

        1、需要构建的对象(例如Animal对象)

        2、构建对象的实现类(例如AnimalBuilder对象),在该类中需要提供三种方法

          (1)私有的构建对象(Animal)

          (2)共有的为构建对象赋值的方法

          (3)共有的构建对象方法(例如build方法,返回一个Animal对象)

          (4)共有的静态创建构建者方法(非必需)

      接下来就直接上代码:

    package com.lcl.galaxy.design.pattern.builder;
    
    import lombok.Data;
    
    @Data
    public class Animal {
    
        private String eye;
    
        private String ears;
    
        private String nose;
    
        private String hair;
    
    }
    package com.lcl.galaxy.design.pattern.builder;
    
    public class AnimalBuilder {
    
        private Animal animal = new Animal();
    
        public static AnimalBuilder builder(){
            return new AnimalBuilder();
        }
    
        public AnimalBuilder eye(String eye){
            animal.setEye(eye);
            return this;
        }
    
        public AnimalBuilder ears(String ears){
            animal.setEars(ears);
            return this;
        }
    
        public AnimalBuilder nose(String nose){
            animal.setNose(nose);
            return this;
        }
    
        public AnimalBuilder hair(String hair){
            animal.setHair(hair);
            return this;
        }
    
        public Animal build(){
            return animal;
        }
    
    }

      测试方法

        @Test
        public void builderTest(){
            Animal animal = AnimalBuilder.builder().eye("blue").hair("yellow").build();
            log.info("=========== {} =========== ", JSON.toJSONString(animal));
        }

      构建者模式与工厂模式的区别:工厂模式是创建千篇一律的对象,而构建者模式是可以根据自身需求创建出自定义的对象

      构建者与seter方法或构造方法的区别:构造方法我们需要关注构造函数的传参顺序,而构建者模式不需要关心。setter方法是先创建一个对象,然后再set值,在没有完全赋值完成之前,就可能会被其他地方使用,而构建者模式,是必须等调用build方法后才会返回构建完成的对象。

  • 相关阅读:
    Windows系统下hosts文件工作原理
    windows2008中IIS7详细安装图文教程加fastcgi模式PHP配置教程
    C#中的global关键字
    Winform自定义控件实例
    PHP的线程安全与非线程安全版本的区别
    Visual Studio的编程环境配置
    C#Winform导出Excel
    分页
    存储过程使用相关知识
    Winform主窗体转移到新窗体
  • 原文地址:https://www.cnblogs.com/liconglong/p/14171549.html
Copyright © 2011-2022 走看看