zoukankan      html  css  js  c++  java
  • 3 创建型模式之

    建造者模式是一步一步创建一个比较复杂的对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的创建过程。该模式是为了将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离开来。

    本例以组装一台电脑为例,电脑有CPU,硬盘,内存,当然还有其它的,本例只用这三个属性表示来组装一台电脑

    代码如下 :

     1 /**
     2  * 组装一台电脑,需要安装硬盘,CPU,和内存条
     3  * 一台电脑
     4  */
     5 public class Computer {
     6     protected String HDD;       //硬盘
     7     protected String CPU;       //CPU
     8     protected String MEM;       //内存条
     9 
    10     public Computer(String hdd,String cpu,String memory){
    11         this.HDD = hdd;
    12         this.CPU = cpu;
    13         this.MEM = memory;
    14     }
    15 
    16 
    17     @Override
    18     public String toString() {
    19         return "HDD="+HDD+" CPU="+CPU+" MEM="+MEM;
    20     }
    21 
    22     /*
    23         内部有一个静态的ComputerBuilder类
    24         ComputerBuilder内部的属性和Computer中是一样的
    25         或者和Computer的子类中的属性是一样的
    26     */
    27     public static class ComputerBuilder{
    28         protected String HDD;       //硬盘
    29         protected String CPU;       //CPU
    30         protected String MEM;       //内存条
    31 
    32         //设置HDD
    33         ComputerBuilder setHDD(String hdd){
    34             this.HDD = hdd;
    35             return this;
    36         }
    37 
    38         //设置CPU
    39         ComputerBuilder setCPU(String cpu){
    40             this.CPU = cpu;
    41             return this;
    42         }
    43 
    44         //设置MEM
    45         ComputerBuilder setMEM(String mem){
    46             this.MEM = mem;
    47             return this;
    48         }
    49 
    50         //创建一个Computer
    51         Computer build(){
    52             return new Computer(this.HDD,this.CPU,this.MEM);
    53         }
    54     }
    55 
    56 }

    使用

    Computer computer = new ComputerBuilder().setCPU("core i7")

        .setHDD("西部数据500G硬盘")

        .setMEM("8G")

        .build();

    computer.toString();

    注:设计模式交流学习群 632945466  欢迎所有热爱技术的大牛,小菜,一起学习讨论进步提高,欢迎随时批评指正

  • 相关阅读:
    vue使用webapck的最基本最简单的开发环境配置
    浏览器里常用的默认事件及事件的属性
    java中的JSON数据转换方法fastjson
    MYSQL mybatis
    js的原型/原型链/构造函数
    面向对象知识点整理(3)
    面向对象知识点整理(2)
    面向对象知识点整理(1)
    DBUtil和连接池 使用
    Math类 BigInteger 类 BigDecimal类 基础用法
  • 原文地址:https://www.cnblogs.com/start1225/p/6716482.html
Copyright © 2011-2022 走看看