zoukankan      html  css  js  c++  java
  • Java学习笔记——设计模式之九.建造者模式

     建造者模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

    Product类:

     1 package cn.happy.design_pattern._09builder;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 
     6 public class Product {
     7 
     8     List<String> parts = new ArrayList<>();
     9     
    10     public void add(String part){
    11         parts.add(part);
    12     }
    13     
    14     public void show(){
    15         System.out.println("创建产品...");
    16         for (String item : parts) {
    17             System.out.println(item);
    18         }
    19     }
    20 }

    Builder类:

    1 package cn.happy.design_pattern._09builder;
    2 
    3 public abstract class Builder {
    4 
    5     public abstract void BuildPartA();
    6     public abstract void BuildPartB();
    7     public abstract Product GetResult();
    8 }

    Builder子类:

     1 package cn.happy.design_pattern._09builder;
     2 
     3 public class ConcreteBuilder1 extends Builder {
     4 
     5     private Product product = new Product();
     6     @Override
     7     public void BuildPartA() {
     8         product.add("部件A");
     9 
    10     }
    11 
    12     @Override
    13     public void BuildPartB() {
    14         product.add("部件B");
    15 
    16     }
    17 
    18     @Override
    19     public Product GetResult() {
    20         // TODO Auto-generated method stub
    21         return product;
    22     }
    23 
    24 }
    25 
    26 public class ConcreteBuilder2 extends Builder {
    27 
    28     private Product product = new Product();
    29     @Override
    30     public void BuildPartA() {
    31         product.add("部件X");
    32 
    33     }
    34 
    35     @Override
    36     public void BuildPartB() {
    37         product.add("部件Y");
    38 
    39     }
    40 
    41     @Override
    42     public Product GetResult() {
    43         // TODO Auto-generated method stub
    44         return product;
    45     }
    46 
    47 }

    Director类:

    1 package cn.happy.design_pattern._09builder;
    2 
    3 public class Director {
    4 
    5     public void Construct(Builder builder){
    6         builder.BuildPartA();
    7         builder.BuildPartB();
    8     }
    9 }

    测试类:

     1 package cn.happy.design_pattern._09builder;
     2 
     3 public class Mmain {
     4     public static void main(String[] args) {
     5         Director director = new Director();
     6         Builder b1 = new ConcreteBuilder1();
     7         Builder b2 = new ConcreteBuilder2();
     8         director.Construct(b1);
     9         b1.GetResult().show();
    10         director.Construct(b2);
    11         b2.GetResult().show();
    12     }
    13 }
  • 相关阅读:
    各种alloc傻傻分不清楚
    嵌入式开发一般流程
    谈谈看门狗在嵌入式中的用法
    基于开发板的二次嵌入式开发
    谈一谈接口电路
    学习ucos和ARM体系结构的路线图
    寻找链表的中位节点(利用快慢指针)
    水箱容积问题
    盛水最多的容器
    数据结构与算法分析C语言描述第二版第79页
  • 原文地址:https://www.cnblogs.com/tomasman/p/7044543.html
Copyright © 2011-2022 走看看