zoukankan      html  css  js  c++  java
  • 设计模式四--建造者模式

    设计模式四--建造者模式

    一、定义

    将一个复杂对象呢的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

    二、优点

    封装性

    建造者独立,容易扩展

    三、原理图

    Product代表具体的产品

    ConcreteBuilder是这些产品建造过程的一个接口

    Builder是这些产品的具体建造实例,实现ConcreteBuilder接口

    Director包含不同的Builder,负责构造各个产品

    四、实例

    1、Computer

    抽象的计算机类

    public abstract class Computer {
        private String type;//型号
        private String cpu;
    
        public String getType() {
            return type;
        }
    
        public void setType(String type) {
            this.type = type;
        }
    
        public String getCpu() {
            return cpu;
        }
    
        public void setCpu(String cpu) {
            this.cpu = cpu;
        }
        
    }

    2、T410

    继承了Computer类

    代表T410电脑

     1 package definition;
     2 
     3 public class T410 extends Computer {
     4     private String graphicCard;//显卡
     5     public T410(){
     6         this.setType("ThinkPad T410");
     7     }
     8     public String getGraphicCard() {
     9         return graphicCard;
    10     }
    11     public void setGraphicCard(String graphicCard) {
    12         this.graphicCard = graphicCard;
    13     }
    14     
    15     
    16     //输出型号,内存和显卡
    17     public String toString() {
    18         return "T410 [getType()=" + getType() + ", getCpu()=" + getCpu() + ", graphicCard=" + graphicCard + "]";
    19     }
    20     
    21 }

    3、X201

    继承了Computer类

    代表X201电脑

     1 public class X201 extends Computer {
     2 
     3     public X201() {
     4         this.setType("ThinkPad X201");
     5     }
     6 
     7     //显示型号和cpu
     8     public String toString() {
     9         return "X201 [getType()=" + getType() + ", getCpu()=" + getCpu() + "]";
    10     }
    11 
    12 }

    4、ComputerBuilder

    接口类,用于建造电脑

    1 public interface ComputerBuilder {
    2     void buildCpu();//建造cpu
    3     void buildGraphicCard();//建造显卡
    4     
    5     Computer getResult();//得到建造好的计算机
    6 }

    5、T410Builder

    实现ComputerBuilder接口

    T410的具体实现

     1 public class T410Builder implements ComputerBuilder {
     2     private T410 computer =new T410();
     3 
     4     public void buildCpu() {
     5         computer.setCpu("i5-450");
     6     }
     7     
     8     public void buildGraphicCard(){
     9         computer.setGraphicCard("Nvidia NVS 3100M");
    10     }
    11 
    12     public Computer getResult() {
    13         
    14         return computer;
    15     }
    16 
    17 }

    6、X201Builder

    实现ComputerBuilder接口

    X201的具体实现

    public class X201Builder implements ComputerBuilder {
    
        private X201 computer = new X201();
        public void buildCpu() {
            computer.setCpu("i3-350");
        }
    
        public Computer getResult() {
            return computer;
        }
    
        public void buildGraphicCard() {
            // TODO Auto-generated method stub
            
        }
    
    }

    7、ComputerDirector

    Director包含不同的Builder,负责构造各个产品

     1 public class ComputerDirector {
     2     ComputerBuilder builder;
     3 
     4     //建造T410号机器
     5     public T410 constructT410() {
     6         builder=new T410Builder();
     7         builder.buildCpu();
     8         builder.buildGraphicCard();
     9         return (T410)builder.getResult();
    10     }
    11 
    12     //建造X201号机器
    13     public X201 constructX201() {
    14         builder=new X201Builder();
    15         builder.buildCpu();
    16         return (X201)builder.getResult();
    17     }
    18 
    19 }

    8、ComputerTest

    具体的测试类

     1 public class ComputerTest {
     2 
     3     public static void main(String[] args) {
     4         ComputerDirector computerDirector=new ComputerDirector();
     5         Computer t410=computerDirector.constructT410();
     6         System.out.println(t410);
     7         
     8         System.out.println("----------------------------");
     9         
    10         Computer x201=computerDirector.constructX201();
    11         System.out.println(x201);
    12     }
    13 
    14 }

    五、实验结果

    T410 [getType()=ThinkPad T410, getCpu()=i5-450, graphicCard=Nvidia NVS 3100M]

    ----------------------------

    X201 [getType()=ThinkPad X201, getCpu()=i3-350]

  • 相关阅读:
    Swift-'as?','as'用法
    Swift-'!','?'用法
    Swift-Debug下打印函数名和行数
    Swift-Swift中的全局变量和函数的创建
    Swift/Objective-C-Swift与Objective-C混用教程
    iOS-代码修改Info.plist文件
    hexo干货系列:(八)hexo文章自动隐藏侧边栏
    hexo干货系列:(七)hexo安装统计插件
    hexo干货系列:(六)hexo提交搜索引擎(百度+谷歌)
    hexo干货系列:(五)hexo添加站内搜索
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/6896214.html
Copyright © 2011-2022 走看看