“你好,阿米戈!我想讓你了解 OOP 的目的。所以我要給你講個故事。”
曾經有一家小公司,將貨物運送到外太空……
“像銀河衝刺?”
“是的,像銀河衝刺。5個人在那里工作。第一個負責財務,第二個在倉庫工作,第三個負責運輸,第四個負責廣告,第五個負責監督。”
他們努力工作並蓬勃發展。這家公司名聲很好,賺了很多錢。訂單數量每年都在增加,因此首席執行官不得不僱用更多員工。幾個負責倉庫,幾個負責運輸,另一個收銀員和一個營銷人員來增加銷售額。
這是問題開始的時候。人員多了,開始相互干擾。
營銷人員把所有的錢都花在了新的廣告活動上,手頭沒有現金來購買急需發貨的商品。
倉庫裡有 10 個裝有全新超光速引擎的箱子,每月運送一次。一名快遞員帶著一台超光速引擎飛走了,導致另一位客戶訂購 10 台超光速引擎的訂單被推遲了一個月。第一個快遞員根本不知道第二個快遞員正在履行另一個訂單。
新任總裁助理派快遞員上船採購貨物,其他的就等下一艘有空的船。有很多緊急交貨,但這位助理只管理採購,並努力做好他的工作。 一個人越是盡職盡責,越是乾涉別人。
在分析情況時,CEO 意識到船舶、現金和貨物等重要資源並未得到最佳使用,而是按照“先到先得”的原則使用。任何人都可以佔用資源來完成他們的工作,從而威脅到其他員工和公司的生產力。
必須要做些事情。首席執行官決定將這家龐大的公司分成幾個部門。他創建了運輸部、市場部、採購部、財務部和倉儲部。現在沒有人可以直接乘坐這艘船。航運部負責人收到所有航運信息後,將船發給對公司最有利可圖的快遞公司。另外,倉庫也沒有讓快遞員隨便拿貨。他們控制了過程。財務部門如果知道很快就會有採購,就不會為營銷分配資金。每個部門都有一個公眾人物:部門負責人。每個部門的內部結構都是自己關心的。如果快遞員要拿東西,他會去找倉庫管理員,而不是去倉庫。當一個新訂單進來時,它交給了運輸部門的負責人(公眾人物),而不是快遞員(私人人物)。
換句話說,CEO將資源和行動分組到部門中,並禁止其他人干涉內部部門結構。 只能聯繫特定的人。
就 OOP 而言,這無非是將程序拆分為對象。由函數和變量組成的整體程序被轉換為由對象組成的程序。這些對象包含變量和函數。
“等一下。所以你是說問題在於每個員工都可以不受限制地訪問資源並且可以向任何其他員工發出命令?”
“對,就是這樣。”
“有趣。我們引入了一個小限制,但我們收到了更多訂單。他們能夠更好地控制一切。”
“是的。以最純粹的形式分而治之。”
“就像你說的,分而治之。這是要記住的事情。”
GO TO FULL VERSION