博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅析面向对象开发
阅读量:5982 次
发布时间:2019-06-20

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

模拟餐厅经营。

需求:

我们现在要开一个餐厅啦,餐厅里面有服务员,有厨师,有顾客。学习面向对象,为餐厅和几个角色创建自己的类吧。
餐厅可以招聘或者解雇职员,职员越多,就越能够满足更多的顾客需求,从而赚取更多的钱
餐厅里的容量是有限的,当顾客坐满了,其他顾客需要排队
服务员的工作有两个职责,一个是负责点菜,另外一个是上菜
厨师的职责就一个,烹饪食物
顾客可以做两件事情,一个是点菜,一个是吃

这一系列写了很久。主要使用到的设计模式是职责链模式和观察者模式。

工厂模式、命令模式、适配器模式、桥接模式这样的都会穿插在其中,可能是平时用习惯了,所以没有刻意是哪种设计模式。

要有复盘的好习惯,这个模拟还会有些可视化的地方需要改进和添加,所以还在继续更新。

职责链模式

这个模式给我最大的体会是,它更像一个中转站,用于数据处理的。用switchtype来判断是哪一种的信息,作出哪一种处理。

职责链模式可以比喻成有序火车,而火车站里面有个函数充当时序表,但是不知道火车什么时候到,却知道该去哪。不好的是容易绕,得不断顺着走,绕出个逻辑来才行。

开始 >> 中转站 >> 方法A >> 中转站 >> 中转站 >> ...... >> 方法B >> 中转站 >> 方法C >> 结束

switch (type) {  case 'A': {    // do Something    break;  }  case 'B': {    // do Something    break;  }  case 'C': {    // do Something    break;  }  case 'D': {    // do Something    break;  }}

观察者模式

观察者模式实现不难,但是逻辑很精密,拍手惊叹。

以模拟餐厅作为例子。顾客、服务员、厨师相互之间进行解耦。

顾客有很多,服务员和厨师也可以有很多。就会有一个类似于"管理者"的角色,可以是Object或者Array。初始化的时候就发起监听。当需要服务员或者厨师的时候,就发布来响应监听。而这个"管理者"的角色起到的作用就是找到空闲人员再分配任务。因为当发布消息的时候,是会让所有监听者都会接收到消息。如果不以"管理者"的形式监听,而以职员单体的形式监听。例如当一个顾客需要服务员的时候,所有服务员都会响应,这就有点糟糕了。

let Observer = (function () {  var _messages = {};  return {    // 注册信息接口    regist : function (type, fn) {      // do Something    },    // 发布信息接口    fire : function (type, args) {      // do Something    },    // 移除信息接口    remove : function (type, fn) {      // do Something    },  }})();

小小的总结和复盘。持续修改

原址:

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

你可能感兴趣的文章
怎么在windows下给GO执行程序添加ico
查看>>
spark配置
查看>>
【整合】快速搭建github ssh 环境
查看>>
获取linux的硬件信息脚本
查看>>
大众点评Cat源码分析(一)—— cat服务端接收MessageTree,分发
查看>>
参数测试中交叉遍历的实现
查看>>
Android源代码为Galaxy nexus 编译
查看>>
提取Git每次提交后Commit的文件
查看>>
Debian下签名无法验证
查看>>
Spring JDBC
查看>>
情人节送ta一朵独一无二的玫瑰花
查看>>
centos上安装git
查看>>
Ubuntu下安装Sublime Text 2
查看>>
更新svn版本后,在更新代码报错
查看>>
在 Mac OS X Lion 下修改 Hosts 的四种方法
查看>>
关于java中敏感词检测的一些总结
查看>>
app常规功能:检查更新 异步请求下载apk文件,更新进度条,最后安装apk
查看>>
android自定义listview的选中状态
查看>>
重用布局文件
查看>>
JDBC进行批处理Batch
查看>>