『23種類のデザインモデルLua編』-仲介者モデル


北漂の生涯の住宅源はすべて家屋の仲介者の手に掌握して、家を借りるのは仲介を通じて大家に連絡するしかありません.PS:北京の賃貸仲介料は一ヶ月の家賃ですね.
一、Custom.luaの取引先の基礎類の大家と借家者は正確に言えばすべて仲介の取引先です
--/**************************************************************************
--    Copyright:    www.SaintGrail.com
--    Author:     liu jing
---   Date:     2014-08-27
---   Description:      
---**************************************************************************/

Custom={}
--     
Custom.name=nil
--            
Custom.mediator=nil     
function Custom:new(_o)
    _o = _o or {}
    setmetatable(_o,self)
    self.__index=self
    return _o
end

function Custom:Notify(_str)
    self.mediator:Notify(_str,self)
end


function Custom:Say(_str)
    print(self.name.."  get message :".._str)
end

二、Mediator.lua不動産屋(双方の情報を把握している)
--/**************************************************************************
--    Copyright:    www.SaintGrail.com
--    Author:     liu jing
---   Date:     2014-08-27
---   Description:     
---**************************************************************************/

--   
Mediator={}

--   
Mediator.landlord=nil
--    
Mediator.tenant=nil

function Mediator:new(_o)
    _o = _o or {}
    setmetatable(_o,self)
    self.__index = self
    return _o
end

function Mediator:Notify(_str,_obj)
    if _obj==self.landlord then
        self.tenant:Say(_str)
    else
        self.landlord:Say(_str)
    end
end

三、mian.lua主関数
require  ("Mediator")
require  ("Custom") 

local function main()

    --       
    local mediator = Mediator:new()
   
    --   
    local landlord = Custom:new()
    landlord.mediator=mediator
    landlord.name = "fangdong"

    --    
    local tenant = Custom:new()
    tenant.mediator=mediator
    tenant.name = "fangke"
    

    mediator.landlord=landlord
    mediator.tenant=tenant

    tenant:Notify("    you fang zi ma?")

    landlord:Notify("    mei fang zi")
end
main()

四、出力結果は以下の通り
Debugger v1.1.0
Debugger: Trying to connect to 127.0.0.1:10000 ... 
Debugger: Connection succeed.
fangdong  get message :    you fang zi ma?
fangke  get message :    mei fang zi