设计模式笔记(4)

作者: 球球球球笨 | 来源:发表于2018-05-27 14:17 被阅读11次

    建造者模式

    GOF对建造者模式的定义是:“将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.”

    public abstract class Builder 
    {
        public abstract void BuildPartA();
        public abstract void BuildPartB();
        public abstract Product GetResult();
    }
    
    public class Product
    {
        ArrayList<String> parts = new ArrayList<String>();
        public void Add(String part)
        {
            parts.add(part);
        }
        public void Show()
        {
            System.out.println("create product");
            for(int i = 0;i<parts.size();i++) {
                String part = parts.get(i);
                System.out.println(part);
            }
        }
    }
    //具体的建造者类
    public class ConcreteBuilderA extends Builder
    {
        private Product product = new Product();
        @override
        public void BuildPartA()
        {
            product.Add("part A");
        }
        @override
        public void BuildPartB()
        { 
            product.Add("part B");
        }
        @override
        public Product GetResult()
        { 
            return product;
        }
    }
    public class ConcreteBuilderB extends Builder
    {
        private Product product = new Product();
        @override
        public void BuildPartA()
        {
            product.Add("part W");
        }
        @override
        public void BuildPartB()
        { 
            product.Add("part Z");
        }
        @override
        public Product GetResult()
        { 
            return product;
        }
    }
    
    //指挥者类
    public class Director {
        public void Construct(Builder builder)
        {
            builder.BuildPartA();
            builder.BuildPartB();  
        }
    }
    

    建造者的作用是隐藏产品的组装过程,如果需要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以达到目的。
    建造者模式是面向对象中“多态”的一个好应用。
    工厂模式侧重点在于将对象的实例化延迟到子类中,创建者的侧重点则是保持一个对象创建过程的稳定性。
    工厂模式专注于创造相同表象的对象,当需要得到具有多种表象的实例时,建造者模式才是好选择、

    相关文章

      网友评论

        本文标题:设计模式笔记(4)

        本文链接:https://www.haomeiwen.com/subject/phmbjftx.html