zoukankan      html  css  js  c++  java
  • Builder 模式

    特点:将对象的表示与对象的创建过程分离,对不同产品具体内容可能有差异,但包装过程相同,则可采用Builder模式。

    模式对象:

    1.产品:即客户所需具体产品

    2.抽象建造者:说明产品生产所需的函数(过程定义)

    3.具体建造者:结合实际产品对象进行生产的函数(过程实现)

    4.指导者:结合抽象建造者函数说明具体产品的封装过程

    5.客户:产品需求者

    举个栗子:

    1.产品

    public class Product {
    private ArrayList<String> product=new ArrayList<String>();
    public void addPart(String partName){
    product.add(partName);
    }

    public void showProduct(){
    for(String part:product){
    System.out.println(part);
    }
    }
    }
    2.抽象建造者
    public abstract class Builder{
    public abstract void buildPartA();
    public abstract void buildPartB();
    public abstract Product getProduct();
    }
    3.具体建造者
    public class ConcreteBuilder extends Builder{
    private Product product=new Product();
    public void buildPartA(){
    product.addPart("PartA");
    }
    public void buildPartB(){
    product.addPart("PartB");
    }
    public Product getProduct(){
    if(product != null)
    return product;
    return null;
    }
    }
    4.指导者
    public class Director {
    public void construct(Builder builder){
    builder.buildPartA();
    builder.buildPartB();
    }
    }
    5.用户
    public class Client {
    public static void main(String[] args) {
    Director director=new Director();

    Builder concreteBuilder=new ConcreteBuilder();
    director.construct(concreteBuilder);
    Product product=concreteBuilder.getProduct();
    product.showProduct();
    }
    }
  • 相关阅读:
    POJ 1703 Find them, Catch them
    POJ 2236 Wireless Network
    POJ 2010 Moo University
    POJ 2184 Cow Exhibition
    POJ 3280 Cheapest Palindrome
    POJ 3009 Curling 2.0
    POJ 3669 Meteor Shower
    POJ 2718 Smallest Difference
    POJ 3187 Backward Digit Sums
    POJ 3050 Hopscotch
  • 原文地址:https://www.cnblogs.com/ssMellon/p/6517973.html
Copyright © 2011-2022 走看看