博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
做一顿家常便饭,建造者设计模式(Builder)
阅读量:6164 次
发布时间:2019-06-21

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

开发的设计模式,是博大精深的,只有一步一个脚印和循序渐进的学习与应用,才能有进步。

近段时间,Insus.NET把自己理解设计模式,简单写了一下与分享自己的理解与想法。得到很多高手与网友的热心评论,让Insus.NET学习与进步不少,真心感谢了。

前几天有写了一篇《》,一开始就创建一个"烹饪类",来负责创建其他类的实例。接下来创建炒,煎,煮,炖等类。

今天,Insus.NET也是以烹饪来写一个建造者设计模式,烹饪是膳食的艺术。Insus.NET虽然不是厨师,但喜欢品尝各种美味的佳肴。

此篇是介绍建造者设计模式,我们以烹饪的方式做一顿家常便饭:

HomelyFood
using System;using System.Collections.Generic;using System.Linq;using System.Web;/// /// Summary description for HomelyFood/// namespace Insus.NET{    //家常便饭    public class HomelyFood    {        //饭菜                List
Meals = new List
(); public void Add(string riceOrDish) { Meals.Add(riceOrDish); } public void Serve() //饭菜上桌 { foreach (string s in Meals) { HttpContext.Current.Response.Write(s); } } }}

做饭类,是抽象的建造者类,确定这顿家常便饭的内容。如炒青菜,煎鸡蛋,清蒸鱼,还有炖汤等:

Cooking
using System;using System.Collections.Generic;using System.Linq;using System.Web;/// /// Summary description for Cooking/// namespace Insus.NET{    public abstract class Cooking    {        public abstract void BoilRice();        public abstract void Fry();        public abstract void PanFry();        public abstract void Steam();        public abstract void Stew();        public abstract HomelyFood GetHomelyFood();    }}

就如上面的家常便饭的菜式,每个做饭者做出来的菜式名目也许是一样,但是手法不一样,调味不一样,都会显示于实际的细节之上。但是吃上这顿饭的人,不清楚做的过程。
因此下面的类是一个真正做饭者类。当然如果遇上烹饪比赛场合,如在某某电视台可以看到烹饪比赛节目,那些是多人多团队进行。因此需要创建多个类。

BehaviourCook
using System;using System.Collections.Generic;using System.Linq;using System.Web;/// /// Summary description for BehaviourCook/// namespace Insus.NET{    public class BehaviourCook : Cooking    {        private HomelyFood hf = new HomelyFood();        public override void BoilRice()        {            hf.Add("白米饭。");        }        public override void Fry()        {            hf.Add("蒜蓉炒通菜。");        }        public override void PanFry()        {            hf.Add("煎荷包蛋。");        }        public override void Steam()        {            hf.Add("清蒸鲩鱼。");        }        public override void Stew()        {            hf.Add("炖汤。");        }        public override HomelyFood GetHomelyFood()        {            return hf;        }    }}

建造者设计模式,还有一个指挥者类,一下班,儿子就对Insus.NET说,肚子饿了,爸爸快做饭给我吃,要有炖汤,清蒸鲩鱼,煎荷包蛋,蒜蓉炒通菜,当然米饭是少不了的。

Director
using System;using System.Collections.Generic;using System.Linq;using System.Web;/// /// Summary description for Director/// namespace Insus.NET{    public class Director    {        public void Construct(Cooking c)        {            c.BoilRice();            c.Fry();            c.PanFry();            c.Steam();            c.Stew();        }    }}

ok,经过一二个小时烹制,一顿简单而美味的家常饭上桌了:

HomelyFoodDemo.aspx.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Insus.NET;public partial class HomelyFoodDemo : System.Web.UI.Page{    protected void Page_Load(object sender, EventArgs e)    {        Director director = new Director();        Cooking c = new BehaviourCook();        director.Construct(c);        HomelyFood hf = c.GetHomelyFood();        hf.Serve();    }}

 建造者设计模式源代码(.net 4.0):

 

转载地址:http://pakba.baihongyu.com/

你可能感兴趣的文章
读取 java.nio.ByteBuffer 中的字符串(String) 写入方式flash.utils.ByteArray.writeUTF
查看>>
范围管理和范围蔓延
查看>>
android90 bind方式启动服务service调用service里的方法
查看>>
前端开发薪资之各地区对比(图文分析)(share)
查看>>
【网络文摘】编程的智慧
查看>>
精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换
查看>>
Oracle笔记 十三、PL/SQL面向对象之package
查看>>
对做“互联网产品”的一些想法
查看>>
模拟一下细胞的繁殖(CSDN号召帖)
查看>>
在Qt Creator 和在 vs2012 里添加信号和槽
查看>>
LintCode: strStr
查看>>
linux下异步IO的简单例子【转】
查看>>
【old】仿MapInfo图层信息工具源码类,使用很简单
查看>>
Resharper 详细教程
查看>>
通过Web页面获取基站位置(Web端,源码下载)转
查看>>
ASP.NET缓存总结
查看>>
Ubuntu 12.04安装Mac OS X Lion 主题
查看>>
SPI协议及其工作原理浅析【转】
查看>>
原生js编写的安全色拾色器
查看>>
iOS:VFL语言
查看>>