zoukankan      html  css  js  c++  java
  • 建造者模式

    日常总能看到用 build 方法创建一个对象,当时就在想问什么这么麻烦,直接 new 一个不可以吗?



    1. 建造者模式(Builder Pattern)

    建造者模式是将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。它是构造方法的一种代替,当构造函数的参数多于4个,且部分参数是可选时可以考虑使用该模式


    注意与工厂模式的区别:

    • 建造者:更注重方法的调用顺序,内容(组装对象),创建对象是不同的
    • 工厂:注重创建对象(生产对象),且常见对象都一样




    2. 流程

    参考并稍加修改开源框架 Mybatis 如何使用 非传统 的建造者模式,下面用 Computer 类作为创建的对象



    2.1 创建的对象类

    public class Computer {
    
        private String cpu;
        private String ram;
        private String vga;
        private String hdd;
    
        public Computer(String cpu, String ram, String vga, String hdd) {
            this.cpu = cpu;
            this.ram = ram;
            this.vga = vga;
            this.hdd = hdd;
        }
    }
    


    2.2 建造器

    public class ComputerBuilder {
    
        public ComputerBuilder() {
        }
    
        public Computer build(String cpu, String ram) {
            return this.build(cpu, ram, null, null);
        }
    
        public Computer build(String cpu, String ram, String vga) {
            return this.build(cpu, ram, vga, null);
        }
    
        public Computer build(String cpu, String ram, String vga, String hdd) {
            return new Computer(cpu, ram, vga, hdd);
        }
    }
    


    2.3 测试

    public static void main(String[] args) {
        Computer computer = new ComputerBuilder().build("i5", "8g");
        System.out.println(computer);
    }
    
    // Computer{cpu='i5', ram='8g', vga='null', hdd='null'}
    

    参考: new SqlSessionFactoryBuilder().build(inputStream)



  • 相关阅读:
    Macbook下安装memcached
    CI框架视图继承
    JavaScript&jQuery 基本使用
    Mac下PHP的环境搭建
    完善口语第一步
    php反射
    php_Trait
    php接口和抽象类
    使用seafile搭建自己的私有云存储
    PHP 简单面向对象 验证码类(静态实例对象调用)
  • 原文地址:https://www.cnblogs.com/Howlet/p/15114616.html
Copyright © 2011-2022 走看看