烧烤店里邂逅三层

简介: 【时间:2012年5月25日 19:10   地点:北京西三环某宾馆楼下的烧烤店】     软考前一天,几个“进京赶考”的“准北漂者”,为了第二天考一个好成绩,一致决定杀向楼下烧烤店。
【时间: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受不了他们,躺下进入 了梦乡。。。。 
 
目录
相关文章
|
2月前
|
人工智能 移动开发 前端开发
AI驱动前端重构:10天完成3000+行复杂组件的跨端复用实践
本文分享了我们团队一次极具代表性的实践:面对一个代码量超3000行、包含数十个平台适配分支的“规格面板”核心组件,我们引入AI开发工具 Cursor 结合 Claude 模型,成功在10天内完成了向ICE架构的全面重构,实现了跨端复用。
AI驱动前端重构:10天完成3000+行复杂组件的跨端复用实践
|
12月前
|
监控 并行计算 数据处理
构建高效Python应用:并发与异步编程的实战秘籍,IO与CPU密集型任务一网打尽!
在Python编程的征途中,面对日益增长的性能需求,如何构建高效的应用成为了每位开发者必须面对的课题。并发与异步编程作为提升程序性能的两大法宝,在处理IO密集型与CPU密集型任务时展现出了巨大的潜力。今天,我们将深入探讨这些技术的最佳实践,助你打造高效Python应用。
173 0
|
4月前
|
机器学习/深度学习 JSON 数据格式
快手直播间提取工具,采集直播间弹幕评论点心,最新开源框架【仅供学习参考】
这是一套快手直播弹幕接收与用户信息查询的源码,原本为客户提供定制服务,现分享出来供学习参考。代码基于 `.版本 2` 开发,支持 WebSocket 客户端连接、解析直播间数据、接收弹幕消息及用户操作(如点亮爱心),并展示在线观众数量和用户详细信息。包含多个子程序实现功能模块化,如头像获取、性别判断等。
|
6月前
|
Cloud Native 关系型数据库 MySQL
华鼎冷链科技 × 阿里云瑶池数据库,打造全链路协同的智慧冷链新标杆
从 PolarDB 的高性能数据库服务到 AnalyticDB 的强大数据分析,阿里云提供的丰富产品矩阵为华鼎冷链科技构建了全面的解决方案,推动华鼎冷链科技从成本中心向效率中心转型。
|
6月前
|
前端开发 Java PHP
开发体育赛事直播系统:实现聊天交友的私聊功能技术实现全方案解析
本文基于体育赛事直播系统,详细介绍了用户间私聊功能的完整实现方案。技术栈涵盖后端(PHP ThinkPHP)、前端(Vue.js)、移动端(Android Java、iOS OC),并结合MySQL数据库与WebSocket+Redis实现实时通信。功能包括一对一私聊、聊天记录显示、未读消息提示、消息免打扰、聊天置顶、删除/清空聊天记录等。文章提供了数据结构设计、接口代码示例及前后端关键实现细节,适合开发者学习参考。
|
8月前
|
关系型数据库 MySQL 分布式数据库
客户说|太美医疗选择阿里云PolarDB,助力医药研发数据安全应用
客户说|太美医疗选择阿里云PolarDB,助力医药研发数据安全应用
262 1
|
监控 物联网 Linux
python测试串口最大通信速率
【4月更文挑战第5天】
406 3
|
9月前
|
人工智能 编解码 算法
全球顶级赛事实践:视频云制播在奥运赛事的关键技术与创新
本次分享主题为“全球顶级赛事实践:视频云制播在奥运等体育赛事的关键技术与创新”。内容涵盖视频云制播的整体技术框架、AI技术重构体育赛事全链路、视频云制播+AI的技术创新与应用、未来展望,以及央视频在奥运等赛事中的成功实践。通过阿里云和央视频的合作,展示了多语种解说、多视角同步、智能媒资管理等技术创新,提升了观众的观赛体验,并推动了体育赛事转播的智能化发展。
367 0