烧烤店里邂逅三层

【时间:2012年5月25日 19:10   地点:北京西三环某宾馆楼下的烧烤店】
    软考前一天,几个“进京赶考”的“准北漂者”,为了第二天考一个好成绩,一致决定杀向楼下烧烤店。

    没到门口呢,小A抢先喊道“服务员,来只烤鸡翅,来串烤羊肉!”,小B一看自己喊晚了,处于“程序猿”的职业精神,直接喊了一句“Call A”。“小哥,在北京,要讲礼貌啊,不要说脏话!”服务员小李不慌不忙的说道。“啊,那个,刚才说的不是脏话,意思是“同上””,小B还自嘲一句“唉,程序猿的悲哀啊!”。。。服务员笑了笑,去通知烧烤老王了。这时磨叽的小C才到,看到一头郁闷的小B直接忽视,显然了他的性格。“服务员,来只烤鸡翅,来串烤羊肉!”。服务员小张“好的,请稍等。”,也去通知老王去了。

    话说,三个程序猿干坐着等,那肯定是闲不住的。小B,憋不住了,

    “话说,咱们这也是进京赶考,你们说明天的考试能不能碰到原题呢?”。

    “每年都有一道相近的原题”。小A答道。

    “可怜我的设计模式不怎么会呢,下午题怎么过啊。”

    “学过三层吗?”

    “学过啊,想当年,我学三层时,那可谓是。。。。哎呀,别打了,打傻了你们赔的起吗”。

    “就你那智商,本来就是负”

    “切,随便考,看看我会不会!”

    “那你说说我们现在遇到的三层吧”一直不语的小C说道。

    “不许说服务员-厨师-采购员这个版本。”小A抢先将了小B一军。

    “说就说。who怕who啊。”,小B,嘴上强硬,心里实则有点发虚。沉下气来,仔细想了想。不理睬小A的中途捣乱,5分钟过后,“有了!”

    “你有了?恭喜恭喜啊!什么时候出生??哈哈哈哈~”小A得瑟的笑着。

    “去你的,说正题。话说,这个三层就拿我们做实验吧。我们三个就是表示层,刚才那两个服务员是业务逻辑层,而烤肉的师傅就是数据访问层”。顿了顿,继续说,“我们只管点烧烤和吃,服务员管通知,上菜,结算,而烤肉师傅则只负责烤肉”。每个角色,顾客换来换取,服务员也换,烤肉师傅也可以换,不管怎么变化,只要这个结构不变,就没有问题。

    “这是您三位的烤羊肉和烤鸡翅,请慢用!”服务员小李把烧烤给端上来了。

    “先吃先吃”,小A和小B争着抢大的吃。

    “嗯,说的不错,回去把这个用代码实现了哈”,小C拿起剩余的那只鸡翅膀也啃了起来。。。

【时间:2012年5月25日 20:00   地点:北京西三环某宾馆】

    “吃完了,该工作了”小C看到打算躺下看电视的小B说道。

    “什么工作?”

    “当然是写代码了,你不会又把任务给吃了吧”

    “这小子肯定不会,你就放过他吧”小A讽刺道。

    “谁说不会的,等着”。小B翻开自己的笔记本,开始噼里啪啦的敲打着。。。

    3分钟过去后。。。

    "写出来了,请看"

       static void Main(string[] args)
        {
            Console.WriteLine("小A:来只烤鸡翅");
            Console.WriteLine("服务员1:烤鸡翅一只");
            Console.WriteLine("烤肉师傅:烤鸡翅");
            Console.WriteLine("");
            Console.WriteLine("小A:来只烤羊肉");
            Console.WriteLine("服务员1:烤羊肉一串");
            Console.WriteLine("烤肉师傅:烤羊肉");
            Console.WriteLine("");
            Console.WriteLine("小B:来只烤鸡翅");
            Console.WriteLine("服务员1:烤鸡翅一只");
            Console.WriteLine("烤肉师傅:烤鸡翅");
            Console.WriteLine("");
            Console.WriteLine("小B:来只烤鸡翅");
            Console.WriteLine("服务员1:烤鸡翅一只");
            Console.WriteLine("烤肉师傅:烤鸡翅");
            Console.WriteLine("");
            Console.WriteLine("小C:来只烤羊肉");
            Console.WriteLine("服务员2:烤羊肉一串");
            Console.WriteLine("烤肉师傅:烤羊肉");
            Console.WriteLine("");
            Console.WriteLine("小C:来只烤鸡翅");
            Console.WriteLine("服务员2:烤鸡翅一只");
            Console.WriteLine("烤肉师傅:烤鸡翅");
            Console.WriteLine("");
            Console.ReadLine();
        }

 

   

    “不是吧,过程式的代码啊,亏你还是考软考的人,真是给我丢脸哎!”一向不怎么鄙视别人的小C也禁不住开始发表感叹!

    “他就是个吃货,把面向对象全吃了,哈哈”小A幸灾乐祸道。

    “切,别着急啊,开个玩笑,这是先让你们看看最终的结果。等着啊,下面就是面向对象版的”

    10分钟过去后。。

    “啊,老天,经过扼杀了我N+1个脑细胞,终于做出来了”小B悲叹道。

 

顾客类:

using Servers;
namespace User
{
    /// <summary>
    /// 顾客类
    /// </summary>
    class User
    {
        string name;
        Servers.Servers server;

        public User(string name)
        {
            this.name = name;
        }
        public void SetServer(string name)
        {
            this.server = new Servers.Servers(name);
        }

        public void Bake()
        {
            Console.WriteLine(name+":来只烤鸡翅");
            server.KaoJiChi();
            Console.WriteLine();
            Console.WriteLine(name + ":来串烤羊肉");
            server.KaoYangRou();
            Console.WriteLine();
        }

        static void Main(string[] args)
        {

            User a = new User("顾客小A");
            User b = new User("顾客小B");
            a.SetServer("服务员小李");
            b.SetServer("服务员小李");
            a.Bake();
            b.Bake();
            User c = new User("顾客小C");
            c.SetServer("服务员小张");
            c.Bake();

            Console.ReadLine();
        }
    }
}

服务员类:

using Cooks;
namespace Servers
{
    /// <summary>
    /// 服务员类
    /// </summary>
    public class Servers
    {
        string name;
        Cooks.Cooks cook=new Cooks.Cooks("烤肉老王");

        public Servers(string name)
        {
            this.name = name;
        }

        /// <summary>
        /// 烤羊肉
        /// </summary>
        public void KaoYangRou()
        {
            Console.WriteLine(name + ":烤羊肉一串");
            cook.BakeMutton();
        }

        /// <summary>
        /// 烤鸡翅
        /// </summary>
        public void KaoJiChi()
        {
            Console.WriteLine(name + ":烤鸡翅一只");
            cook.BakeChickenWing();
        }
    }
}

烤肉者类:

namespace Cooks
{
    public class Cooks
    {
        string name;
        public Cooks(string name)
        {
            this.name = name;
        }

        /// <summary>
        /// 烤羊肉
        /// </summary>
        public void BakeMutton()
        {
            Console.WriteLine(name +":烤羊肉");
        }

        /// <summary>
        /// 烤鸡翅
        /// </summary>
        public void BakeChickenWing()
        {
            Console.WriteLine(name + ":烤鸡翅");
        }
    }
}

 

    “勉勉强强吧,这样顾客在变化中,服务员在变化,就连烤肉师傅也可以换,这些变化都不会影响整个业务流程。每层的变化都是独立的,不会对其他的有影响。这就是人们常说的“解耦”。”小C总是高深莫测的样子。扶了扶眼睛,继续说道,

    “其实利用分层,不光是解耦,还是可以快速开发。一个项目,分好多人,有团队的每个人去并发的开发一层,可以节约大量的时间。当然复用也是很有帮助的。”

    “哈,这次吃烤肉没白吃啊,居然又邂逅三层了,又练习了对三层的应用,嗯,收获不小 ,希望明天考试也这样顺利就好了”小B发着感慨。

    “不早了,都睡觉了,明天还要考试呢”小C提醒道。

    “等会等会,我还没有看完电视呢!”中途跑去看电视的小A嚷嚷着。

    “现在网络多发达啊,电视剧都放到网络上了,只要你在任何时间,任何地点,任何一台可以联网的机子,你就可以看想看的电视剧了,完全不受约束。”小B显摆的说道。突然眼睛一亮,

    “又是三层!!”小B和小C同时喊道。然后相互望了一眼,哈哈大笑起来。

    “神经,睡觉了!”小A受不了他们,躺下进入 了梦乡。。。。 

 

时间: 2024-09-14 11:16:58

烧烤店里邂逅三层的相关文章

聊聊加班的一些杂感

前几天看到前同事在朋友圈感慨: 年龄大了,越来越感觉时间的不够用.想陪伴更多,想工作更好,晚上想加会班,又怕回家后孩子睡着了又感觉奶奶带一天孩子太累.所以现在加班,陪伴都成了奢侈的事情,身份越多,考虑的事情越多,不止一次感叹女儿长得太快,感叹我们和父母老去的太快,不过也感恩现在的一切,我还能工作,还有家人,还有越来越好的生活. --------此感引发于下班后临走前和同事打的一个招呼,羡慕他还有时间加班,此处并非矫情. 我看了以后,深有同感,默默的点了一个赞. 当然前提是你所在的公司文化不是以加

邂逅乔布斯的普通人:差点在停车场撞死他

凤凰科技讯 北京时间11月X日消息,据BusinessInsider网站报道,大家或许都听过史蒂夫·乔布斯(Steve Jobs),或者 看过他在演讲台上做iPhone和iPad发布时的样子. 但是,离开了演讲台,"乔帮主"会是 什么样子?尤其是在他改变世界之前.想必你也很好奇吧?Quora论坛上,发起了这么一个谈论,一些曾经"邂逅"乔布斯的人,谈了他们各自的经历.下面我们一起 来看看节选内容吧.1.这个人告诉乔布斯:你会"毁了"苹果米歇尔·史密

隋政军口述:爆扁爽木屋烧烤是这样成功的

从09年开始,隋政军一直在苦苦的探究,学习;试用;失败;总结;再学习;再失败.5年过去了.看了无数书,上了N多培训班,犯了能犯错误.终于开始找到属于木屋的那个必然之道--"爆扁爽" 微利时代连锁餐饮企业核心竞争力打造探究由于偶然的机会进入餐饮行业后这13年中我的感觉就如坐过山车,一直在爽与不爽中折腾.总觉得事事不是被自己把控,所有的问题如一个巨大旋涡,自己身陷其中,苦苦挣扎,寻找出路.记得09年去上海上课的路上,看到一篇高人写的文章说:所谓成功的人士,基本上都是属于运气好.被天上掉下的

新闻发布系统,B/S模式下的三层应用

三层的学习已接触四五个月了,最早是在学习VB.NET视频中开始接触的,那时候跟着视频敲了两个例子.再后来,个人机房重构的时候,从三层进步到了七层,此后就觉得我们不能仅仅局限于三层之上. 不过,那些都是C/S模式之下的编程.到现在,接触了B/S模式也一个多月了,第一个牛腩新闻发布系统觉得很是有趣,还是从最基本的开始,下面就一起看看B/S模式下,三层是怎样应用的.这篇博客就以添加新闻的实例来总结. 对于三层的整个过程大家都是很熟悉的了,那么在这里就不再赘述了,直接一层一层来分析. 一.思路整理. U

AutoThrCode 三层结构业务层代码自动生成工具

请看下面示例:数据表结构如下: 生成的 属性成员 和 添加,更新的代码: 'AutoThrCode自动生成三层结构业务逻辑层代码'IsDotNet 版权所有'作者:梦虫'Msn:IsDotNet@MsN.CoM'Http://www.IsDotNet.com'本代码引用 IsDotNet.Data.SqlDbHelper 类,请将 AdoHelper.dll 拷贝到WEB程序的BIN目录下'请在WEB程序的web.config文件的节配置数据库连接字符串,"ConnectionString&qu

利用ExtJS构建客户端三层初探

在软件架构中,特别是B/S架构中,很流行使用三层架构(数据层.中间层. 表现层)来建立软件.但这从来都是服务器端的专利.在传统的概念中,客户端 的职责就只是用来对数据进行展现而已.如果说客户端也搞三层,确实是一样不 可思议的事件. 为什么要搞客户端三层? ExtJS这个框架是个功能很强大的框架,由于它给了开发者很大的自由度跟细 粒度.开发者在开发的过程中,配置.使用一个组件需要编写许多的代码.工作 量大不说,效率低,可重用性低却是致命的.所以,聪明的开发者,应该积极利 用ExtJS里的面向对象功

三层架构(一)——什么是三层架构?

 一.什么是三层架构?   1.概念   三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了"高内聚,低耦合"的思想.    分层(tier) 概念 表现层(UI) 通俗讲就是展现给用户的界面,用于显示数据和接受用户输入的数据:即用户在使用一个系统的时候他的所见所得. 业务逻辑层(BLL) 针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理.是表

asp简单的ajax留言板(采用三层模式)

ajax 好久没有写过asp了,这回写个留言板还真觉得有点难度,竞然写了整整一天,哈哈.就只有留言其它的都什么也没写,采用三层结构(不知道算不算,本来对三层的概念很糊涂) 演示www.zj55.com的留言板,希望各位大哥大姐如果发现有漏洞的话请在这里告诉我,千万不要黑我的网站,在这里小弟先谢过了. index.asp<%@ codepage=65001%><%option explicit%><% Response.Charset="utf-8"%>

设计可用的表单:表单的三层模型

设计 当大家在纸上或电脑上填写表单时,为什么经常说'我不太会填表'或者'我最烦填表了'?这里一定是有原因的,其中一定是有一些什么东西让人们有这样的感觉. 在'三层模型'中,一个表单有三种属性:感知(布局).对话(问题和回答).和关系(任务的结构). 用三层模型来分析表单可以让我们更好的分析现存的问题,并且提出让表单更可用的方法. 前言 如果你想做一个可用的表单,第一步就是要了解什么是表单.通过解析表单的属性,改善它的各个方面,之后再合成这些改善了的元素,可以整体提高表单的效果. 这些想法来源于我