zoukankan      html  css  js  c++  java
  • 《大话设计模式》学习笔记9:建造者模式

      

      

    建造小人示例:

      

    1.Builder:

        public abstract class PersonBuilder
        {
            public abstract void BuildHead();
            public abstract void BuildBody();
            public abstract void BuildArm();
            public abstract void BuildLeg();
        }

    2.ConcreteBuilder:

        public class ThinPersonBuilder:PersonBuilder
        {
            public override void BuildHead()
            {
                Console.WriteLine("瘦头");
            }
    
            public override void BuildBody()
            {
                Console.WriteLine("瘦身体");
            }
    
            public override void BuildArm()
            {
                Console.WriteLine("瘦手");
            }
    
            public override void BuildLeg()
            {
                Console.WriteLine("瘦腿");
            }
        }
    
        public class FatPersonBuilder:PersonBuilder
        {
            public override void BuildHead()
            {
                Console.WriteLine("胖头");
            }
    
            public override void BuildBody()
            {
                Console.WriteLine("胖身体");
            }
    
            public override void BuildArm()
            {
                Console.WriteLine("胖手");
            }
    
            public override void BuildLeg()
            {
                Console.WriteLine("胖腿");
            }
        }

    3.Director:

        public class PersonDirector
        {
            private PersonBuilder personBuilder;
            public PersonDirector(PersonBuilder personBuilder)
            {
                this.personBuilder=personBuilder;
            }
            public void CreatePerson()
            {
                personBuilder.BuildHead();
                personBuilder.BuildBody();
                personBuilder.BuildArm();
                personBuilder.BuildLeg();
            }
        }

    4.客户端代码:

        class Program
        {
            static void Main(string[] args)
            {
                PersonBuilder thinPersonBuilder = new ThinPersonBuilder();
                PersonDirector thinPersonDirector = new PersonDirector(thinPersonBuilder);
                thinPersonDirector.CreatePerson();
    
                PersonBuilder fatPersonBuilder = new FatPersonBuilder();
                PersonDirector fatPersonDirector = new PersonDirector(fatPersonBuilder);
                fatPersonDirector.CreatePerson();
            }
        }

      建造者模式的好处是使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所欲若需要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以了。

  • 相关阅读:
    C#中ConnectionStrings和AppSettings的区别
    VS2010 生成的程序在其他电脑上不运行的问题
    装修经验
    在Linux下安装rar for linux
    判断二叉搜索树的后序遍历序列
    二维数组中的查找某个数
    Spring MVC执行原理
    将二叉搜索树转换成一个排序的双向链表
    打印二叉树中所有分支之和等于某个数
    ObjectiveC中public、protected、private的使用[转]
  • 原文地址:https://www.cnblogs.com/walden1024/p/4495445.html
Copyright © 2011-2022 走看看