分享

策略模式Lua实现

 quasiceo 2014-02-04

策略模式Lua实现

[日期:2013-11-11] 来源:Linux社区  作者:yitouhan [字体: ]

策略模式Lua实现

Strategy = {}

ConcreteStrategyA = {}

ConcreteStrategyB = {}

ConcreteStrategyC = {}

Context = {strategy = nil}

function Strategy:new(o)
 o = o or {}
 setmetatable(o,self)
 self.__index = self
 return o;
end

function Strategy:AlgorithmInterface()
 print("逻辑接口")
end

ConcreteStrategyA = Strategy:new()

function ConcreteStrategyA:AlgorithmInterface()
 print("具体策略A")
end

function Context:new(o,s)
 o = o or {}
 setmetatable(o,self)
 self.__index = self
 if s ~= nil then
  o.strategy = s
 end
 return o;
end


function Context:ContextInterface()
 self.strategy:AlgorithmInterface()
end

context = Context:new({},ConcreteStrategyA:new())
context:ContextInterface()

上面的代码的输出结果是:具体的策略A

如果你把

function ConcreteStrategyA:AlgorithmInterface()

注释掉,输出的结果应该就会是:逻辑接口。

有兴趣的同学也可以将ConcreteStrategyB,ConcreteStrategyC加上去,练练手。

交流群:315249378

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多