今天我要說說我自己,夢想中的我自己,我身價過億,有兩個大公司,乙個是房地產公司,乙個是服裝製造業,這兩個公司都非常賺錢,天天幫我在累加財富,事實上是什麼公司我倒是不關心,我關心的是是不是在賺錢,賺 了多少,這才是我關心的,我是商人呀,唯利是圖是我的本性,偷稅漏稅是我的方法,欺上瞞下、壓榨員工血汗 我是的手段嘛,呵呵。同一時候我公司也 會發展,最終在有一天我認為賺錢速度太慢,於是我上下疏通,左右打關係,最終開闢了一條賺錢的康莊大道:生產山寨產品,什麼產品呢?就是市場上什麼牌子的東西火爆我生產什麼牌子的東西,甭管是打火機還是電腦,僅僅要它火爆,我就生產,賺過了高峰期就換個產品,打一槍換乙個牌子,不承擔售後成本、也不操心銷路問題,
我僅僅有**的十分之中的乙個的**,你買不買?哈哈,賺錢呀!
那麼,我的服裝廠就開始變成山寨 ipod 生產車間,然後就看我的財富在積累積累,你想呀山寨的東西不須要特別的銷售渠道(**到**我就到**),不須要維修成本(大不了給你換個,你還想咋地,過了高峰期我就改頭換面了你找誰維修去,投訴?投訴誰呢?),不承擔廣告成本(**在打廣告,我還須要嗎?須要嗎?),可是我也有犯愁的時候,我這是個山寨工廠,要及時的生產出市場上流行產品,轉型要快,要靈活,今天從生產 ipod 轉為生產 mp4,明天再轉為生產上網本,這個都須要靈活的變化,不要限制的太死,那問題來了,每次我的廠房,我的工人,我的裝置都在,不可能每次我換個山寨產品我的廠子就徹底不要了,這不行,成本忒高了點,那怎麼辦?請看類圖:
cnewcorp 類和 iproduct 類建立乙個關聯關係,能夠徹底解決我以後山寨公司生產產品的問題了。
凝視:main(),客戶
iproduct。產品介面
chouse。房子
cipod。ipod
cclothes,服裝
cnewcorp,橋梁類,makemoney()是橋梁方法
cnewhousecorp,僅僅能生產房子,所以建構函式是chouse*
cshanzhaicorp,什麼賺錢就生產什麼,所以建構函式是iproduct*
說明:客戶直接使用cnewhousecorp和cshanzhaicorp類。在main()函式裡構造產品。然後傳到這兩個類裡。這兩個類的makemoney()函式,先呼叫基類的makemoney()。然後分別執行各自的邏輯。
注意:cnewcorp起到了橋梁的作用。能夠分別新增產品和公司。
require "class"
-----------iproduct------------
iproduct = class()
function iproduct:beproducted()
endfunction iproduct:beselled()
end-- 注:事實上不須要繼承iproduct
-----------house------------
house = class(iproduct)
function house:beproducted()
print("生產出的房子是這個樣子的...")
endfunction house:beselled()
print("生產出的房子賣出去了...")
end-----------clothes------------
clothes = class(iproduct)
function clothes:beproducted()
print("生產出的衣服是這個樣子的...")
endfunction clothes:beselled()
print("生產出的衣服賣出去了...")
end-----------ipod------------
ipod = class(iproduct)
function ipod:beproducted()
print("生產出的ipod是這個樣子的...")
endfunction ipod:beselled()
print("生產出的ipod賣出去了...")
end-- 橋梁--
-------------newcorp--------------
newcorp = class()
function newcorp:ctor(pproduct)
self.m_pproduct = pproduct
endfunction newcorp:imakemoney()
-- 每乙個公司都是一樣,先生產
self.m_pproduct:beproducted()
-- 然後銷售
self.m_pproduct:beselled()
end-------------newhousecorp--------------
newhousecorp = class(newcorp)
function newhousecorp:makemoney()
self:imakemoney()
print("房地產公司賺大錢了...")
end-------------shanzhaicorp--------------
shanzhaicorp = class(newcorp)
function shanzhaicorp:makemoney()
self:imakemoney()
print("房地產公司賺大錢了...")
end-------------donewrun test--------------
function donewrun1()
print("----------房地產公司是這樣執行的----------")
local house = house.new()
local newhousecorp = newhousecorp.new(house)
newhousecorp:makemoney()
print("----------山寨公司是這樣執行的----------")
local clothes = clothes.new()
local shanzhaicorp = shanzhaicorp.new(clothes)
shanzhaicorp:makemoney()
endfunction donewrun2()
print("----------房地產公司是這樣執行的----------")
local house = house.new()
local newhousecorp = newhousecorp.new(house)
newhousecorp:makemoney()
print("----------山寨公司是這樣執行的----------")
local ipod = ipod.new()
local shanzhaicorp = shanzhaicorp.new(ipod)
shanzhaicorp:makemoney()
end--- main ---
function main()
donewrun1()
print("*********************************")
donewrun2()
endmain()
執行結果,例如以下:
設計模式筆記之五 命令模式
命令模式的定義 將請求封裝成物件,以便使用不同的請求 佇列或者日誌來引數化其他物件。命令模式也支援可撤銷的操作。uml圖 暫略 例子 命令介面類 public inte ce icommand 具體的命令實現類1 public class concretecommand1 implements ic...
lua設計模式之抽象工廠模式
父類a iuser function iuser new o o o or setmetatable o,self self.index self return o end 父類a的子類a1 sqlserveruser iuser new function sqlserveruser insert ...
設計模式之單例項模式
例項,也就是物件,單例項,就是只能有乙個物件。那怎樣才能讓乙個類只能例項化乙個物件呢?很簡單,首先需要讓類的構造方法私有化,這樣外界就不能隨意的例項化物件了。接著,提供乙個公共的靜態的方法返回這個物件,讓外界得到這個類的物件。以乙個學生類為例 package com.techck.file auth...