博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
建造者模式
阅读量:5348 次
发布时间:2019-06-15

本文共 2487 字,大约阅读时间需要 8 分钟。

建造者模式:可以将一个产品的内部表现与产品的生成过程分割开来。从而可以使一个建造过程具有不同的内部表现的产品对象。如果我们用了建造者模式,那么用户就只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了

namespace 建造者模式{    class Program    {        static void Main(string[] args)        {            //创建指挥者            Director director = new Director();            //创建部件AB类            Builder b1 = new ConcreteBuilder1();            //创建部件XY类            Builder b2 = new ConcreteBuilder2();            //增加AB部件            director.Construct(b1);            Product p1 = b1.GetResult();            //进行展示            p1.Show();            //增加XY部件            director.Construct(b2);            Product p2 = b2.GetResult();            //进行展示            p2.Show();            Console.Read();        }    }    ///     /// 指挥者     ///     class Director    {        ///         /// 用来指挥建造过程           ///         ///         public void Construct(Builder builder)        {            //建造AB部件            builder.BuildPartA();            //建造XY部件            builder.BuildPartB();        }    }    ///     /// 抽象建造者    ///     abstract class Builder    {        public abstract void BuildPartA();        public abstract void BuildPartB();        public abstract Product GetResult();    }    ///     /// 具体建造类1    ///     class ConcreteBuilder1 : Builder    {        private Product product = new Product();        public override void BuildPartA()        {            product.Add("部件A");        }        public override void BuildPartB()        {            product.Add("部件B");        }        public override Product GetResult()        {            return product;        }    }    ///     /// 具体建造类2    ///     class ConcreteBuilder2 : Builder    {        private Product product = new Product();        public override void BuildPartA()        {            product.Add("部件X");        }        public override void BuildPartB()        {            product.Add("部件Y");        }        public override Product GetResult()        {            return product;        }    }    ///     /// 产品类    ///     class Product    {        IList
parts = new List
(); //增加产品部件 public void Add(string part) { parts.Add(part); } //展示产品 public void Show() { Console.WriteLine("\n产品 创建 ----"); //列出产品所有的部件 foreach (string part in parts) { Console.WriteLine(part); } } }}

  

转载于:https://www.cnblogs.com/happygx/p/8393261.html

你可能感兴趣的文章
mybatis 学习四 (上)resutlMap
查看>>
ES6学习之数组的扩展
查看>>
Lua 语言基本语法
查看>>
ARM 的Thumb状态测试
查看>>
windows下读取utf-8文件
查看>>
apache 启动不了的排查方法
查看>>
Java有没有goto?
查看>>
(转)makefile 的用法
查看>>
Linux云自动化运维第十六课
查看>>
1.秋招复习简单整理之红黑树性质
查看>>
hive基础2
查看>>
CocoaPods Mac App的安装和使用
查看>>
python 正则表达式匹配ip
查看>>
Flask实战-留言板-使用Faker生成虚拟数据 --
查看>>
解决VC++6.0 无法打开、无法添加工程文件
查看>>
ORA-01858: a non-numeric character was found where a numeric was expected
查看>>
Structure From Motion(二维运动图像中的三维重建)
查看>>
25复杂链表的复制
查看>>
2 Orchard汉化资源包的使用
查看>>
python3 property
查看>>