日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

浅析面向对象开发

發(fā)布時間:2025/5/22 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅析面向对象开发 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

模擬餐廳經營。

需求:

我們現(xiàn)在要開一個餐廳啦,餐廳里面有服務員,有廚師,有顧客。學習面向對象,為餐廳和幾個角色創(chuàng)建自己的類吧。
餐廳可以招聘或者解雇職員,職員越多,就越能夠滿足更多的顧客需求,從而賺取更多的錢
餐廳里的容量是有限的,當顧客坐滿了,其他顧客需要排隊
服務員的工作有兩個職責,一個是負責點菜,另外一個是上菜
廚師的職責就一個,烹飪食物
顧客可以做兩件事情,一個是點菜,一個是吃

這一系列寫了很久。主要使用到的設計模式是職責鏈模式和觀察者模式。

工廠模式、命令模式、適配器模式、橋接模式這樣的都會穿插在其中,可能是平時用習慣了,所以沒有刻意是哪種設計模式。

要有復盤的好習慣,這個模擬還會有些可視化的地方需要改進和添加,所以還在繼續(xù)更新。

Github中的項目與知識點

演示

職責鏈模式

這個模式給我最大的體會是,它更像一個中轉站,用于數(shù)據(jù)處理的。用switch與type來判斷是哪一種的信息,作出哪一種處理。

職責鏈模式可以比喻成有序火車,而火車站里面有個函數(shù)充當時序表,但是不知道火車什么時候到,卻知道該去哪。不好的是容易繞,得不斷順著走,繞出個邏輯來才行。

開始 >> 中轉站 >> 方法A >> 中轉站 >> 中轉站 >> ...... >> 方法B >> 中轉站 >> 方法C >> 結束

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

觀察者模式

觀察者模式實現(xiàn)不難,但是邏輯很精密,拍手驚嘆。

以模擬餐廳作為例子。顧客、服務員、廚師相互之間進行解耦。

顧客有很多,服務員和廚師也可以有很多。就會有一個類似于"管理者"的角色,可以是Object或者Array。初始化的時候就發(fā)起監(jiān)聽。當需要服務員或者廚師的時候,就發(fā)布來響應監(jiān)聽。而這個"管理者"的角色起到的作用就是找到空閑人員再分配任務。因為當發(fā)布消息的時候,是會讓所有監(jiān)聽者都會接收到消息。如果不以"管理者"的形式監(jiān)聽,而以職員單體的形式監(jiān)聽。例如當一個顧客需要服務員的時候,所有服務員都會響應,這就有點糟糕了。

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

小小的總結和復盤。持續(xù)修改

原址:http://www.coyeah.top/2018/06/28/%E6%B5%85%E6%9E%90%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E5%BC%80%E5%8F%91/

總結

以上是生活随笔為你收集整理的浅析面向对象开发的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。