zoukankan      html  css  js  c++  java
  • 不得不懂的C#设计模式学习(一)

           每天有两个小时要在地铁上度过,打发枯燥的坐车时间唯有看书。最近在看经典大作大话设计模式,其中的编程思想带给我很大的震撼。

    每天学习一个设计模式(建造者模式)

       建造者模式概述:

          建造则(Builder Pattern)也叫做生成器模式,提供一种“封装机制”来隔离出"复杂对象的各个部分"的变化,从而保持"稳健构建算法"不随着需求改变而改变。

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

      在建造者模式中,有如下四个角色:

         Product产品类:

    通常是实现了模板方法模式,也就是有模板方法和基本方法。

         Builder抽象建造者:

    规范产品的组建,一般是由子类实现。

         ConcreteBuilder具体建造者

    实现抽象类定义的所有方法,并返回一个组件好的对象。

         Director导演

    负责安排已有模块的顺序,然后告诉Builder开始创建。

    代码清单:   

    public class Product
        {
            IList<string> parts = new List<string>();
            public void Add(string str)
            {
                parts.Add(str);
            }
    
            public void Show()
            {
                Console.WriteLine("\n产品创建-----");
                foreach (string item in parts)
                {
                    Console.WriteLine(item);
                }
            }
        }
    
        public abstract class Builder
        {
            public abstract void BuilderPartA();
            public abstract void BuilderPartB();
            public abstract Product GetResult();
        }
    
        class ConcreteBuilder1 : Builder
        {
            private Product product = new Product();
    
            public override void BuilderPartA()
            {
                product.Add("部件A");
            }
    
            public override void BuilderPartB()
            {
                product.Add("部件B");
            }
    
            public override Product GetResult()
            {
                return product;
            }
        }
    
    
        public class ConcerteBulider2 : Builder
        {
            private Product product = new Product();
    
            public override void BuilderPartA()
            {
                product.Add("部件X");
            }
    
            public override void BuilderPartB()
            {
                product.Add("部件Y");
            }
    
            public override Product GetResult()
            {
                return product;
            }
        }
    
        public class Director
        {
            public void Construct(Builder builder)
            {
                builder.BuilderPartA();
                builder.BuilderPartB();
            }
        }
     static void Main(string[] args)
            {
                Director director = new Director();
                Builder b1 = new ConcreteBuilder1();
                Builder b2 = new ConcerteBulider2();
                director.Construct(b1);
                Product p1 = b1.GetResult();
                p1.Show();
                director.Construct(b2);
                Product p2 = b2.GetResult();
                p2.Show();
            }

     总结:建造者模式的实质是解耦组装过程和创建具体部件,使得我们不关心每个部件是如何组装的。

              建造者模式的奥妙在于Builder将构建次序交给Director类按照次序构建所需的组件。

    相关模式

              抽象工厂:重点是工厂模式(简单或者复杂工厂),而建造者模式重点是由简单模式构建复杂对象。

              复合模式:经常被用来构建复杂模式。

  • 相关阅读:
    JUC学习
    java反射学习
    JSON入门学习
    redis
    NoSQ学习
    手写Lockl锁
    MapReduce过程
    scala学习
    idea jetty 配置
    java 基础--理论知识
  • 原文地址:https://www.cnblogs.com/mondLei/p/3009333.html
Copyright © 2011-2022 走看看