建造者模式

来源:互联网 发布:焦点堆叠软件 编辑:程序博客网 时间:2024/06/05 00:09

建造者模式是一种创建型模式,它主要是应对项目中一些复杂对象的创建工作。所谓“复杂对象”,是指此对象中还含有其它的子对象。我们现在定义一个场景:汽车生产必须包含车轮(Wheel)、油箱(OilBox)和车身(Body),应用建造者模式,用C#控制台应用程序实现该设计,构建BMW品牌和BenZ品牌汽车生产。绘制该模式的UML图。






namespace shiyan4jianzaozhemoshi{    class Product    {        private string partA;        private string partB;        private string partC;        public string PartA        {            set { partA = value; }            get { return partA; }        }        public string PartB        {            set { partB = value; }            get { return partB; }        }        public string PartC        {            set { partC = value; }            get { return partC; }        }        public void Introduce()        {            Console.WriteLine(PartA);            Console.WriteLine(PartB);            Console.WriteLine(PartC);            Console.WriteLine();        }    }    abstract class Builder    {        protected Product product = new Product();        public abstract void BuildPartA();        public abstract void BuildPartB();        public abstract void BuildPartC();        public Product GetResult()        {            return product;        }    }    class ConcreteBuilderBMW : Builder    {        public override void BuildPartA()        {            product.PartA = "Finish Wheel for BMW";        }        public override void BuildPartB()        {            product.PartB = "Finish OilBox for BMW";        }        public override void BuildPartC()        {            product.PartC = "Finish Body for BMW";        }    }    class ConcreteBuilderBenZ : Builder    {        public override void BuildPartA()        {            product.PartA = "Finish Wheel for BenZ";        }        public override void BuildPartB()        {            product.PartB = "Finish OilBox for BenZ";        }        public override void BuildPartC()        {            product.PartC = "Finish Body for BenZ";        }    }    class Director    {        private Builder builder;        public Director(Builder builder)        {            this.builder = builder;        }        public void SetBuilder(Builder builder)        {            this.builder = builder;        }        public void Construct()        {            builder.BuildPartA();            builder.BuildPartB();            builder.BuildPartC();        }    }    class Program    {        static void Main(string[] args)        {            Product pt;            Builder bd = new ConcreteBuilderBMW();            Director dt = new Director(bd);            dt.Construct();            pt = bd.GetResult();            pt.Introduce();            bd = new ConcreteBuilderBenZ();            dt.SetBuilder(bd);            dt.Construct();            pt = bd.GetResult();            pt.Introduce();            //Console.ReadKey();            //Console.ReadLine();            //Console.Read();        }    }}








原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果6p用久了卡怎么办 小猪民宿平台限制三天上线怎么办 交易猫买家申请了仲裁我的钱怎么办 雷达石英手表表里面有小灰尘怎么办 电脑宽带用户名和密码忘记了怎么办 腾讯会员不让别人在异地登录怎么办 中毒后电脑文件后缀是lnk怎么办 wps逗号隔的空不一样大怎么办 电脑盘里的文件删不了怎么办 在淘宝买的qq账号被找回了怎么办 微信公众号的密码忘了怎么办 公众号安全助手密码忘了怎么办 微博账号存在发布违规信息怎么办 余额宝转出到银行卡被冻结怎么办 银行账户被冻结被转出钱怎么办 从余额宝转出的资金被冻结怎么办 微信账号卖了但是实名认证了怎么办 uc下载文档里的文档全没了怎么办 二手乐视没有账号和密码怎么办 华为账号密码忘了手机卡丢了怎么办 联想平板微信更新后不可兼容怎么办 小米手机刷完机账号密码忘了怎么办 红米手机的小米账号密码忘了怎么办 小米手机账号密码手机号忘了怎么办 小米手机忘了账号和密码怎么办 自己的小米账号密码忘了怎么办 小米手机丢了不记得小米账号怎么办 小米手环账号密码忘了怎么办 阴阳师一个区的账号找不到了怎么办 阴阳师手机账号代练登录了后怎么办 我的微信账号被盗更改密码了怎么办 vivo手机密保密码忘了怎么办 华为手机保密柜忘记密保问题怎么办 支付宝账号突然说没有了怎么办 快手号密码可能被盗登不上该怎么办 海岛奇兵小米版换手机了怎么办 申诉找回微信密码验证吗错误怎么办 微信密码忘了申诉不成功怎么办 微信密码忘了申诉不了怎么办 微信密码忘了申诉不回来怎么办 微信号密码忘了申诉失败怎么办