--[[
优点: 外观模式的目的不是给子系统添加新的功能接口,
而是为了让外部减少与子系统内多个模块的交互,
松散耦合,从而让外部能够更简单的使用子系统。
当然,这是一把双刃剑。
缺点: 不能很好地限制客户端直接使用子系统类,
如果对客户端访问子系统类做太多的限制则减少了
可变性和灵活性。
下面外部只与Facade交互,而Facade与System交互,
从而达到上述的优点。
]]--
System = {}
function System:new(o)
o = o or {}
setmetatable(o,self)
self.__index = self
return o;
end
SubSystemOne = System:new()
function SubSystemOne:MethodOne()
print("调用子系统一的方法一")
end
function SubSystemOne:MethodTwo()
print("调用子系统一的方法二")
end
function SubSystemOne:MethodThree()
print("调用子系统一的方法三")
end
SubSystemTwo = System:new()
function SubSystemTwo:MethodOne()
print("调用子系统二的方法一")
end
function SubSystemTwo:MethodTwo()
print("调用子系统二的方法二")
end
SubSystemThree = System:new()
function SubSystemThree:MethodOne()
print("调用子系统三的方法一")
end
Facade = {}
function Facade:new(o)
o = o or {}
setmetatable(o,self)
self.__index = self
o.one = SubSystemOne:new()
o.two = SubSystemTwo:new()
o.three = SubSystemThree:new()
return o;
end
function Facade:MethodOne()
self.one:MethodOne()
self.one:MethodThree()
self.two:MethodTwo()
end
function Facade:MethodTwo()
self.one:MethodTwo()
self.two:MethodOne()
self.three:MethodOne()
end
function Facade:MethodThree()
self.one:MethodOne()
self.two:MethodOne()
self.three:MethodOne()
end
facade = Facade:new()
facade:MethodOne()
输出结果:
调用子系统一的方法一
调用子系统一的方法三
调用子系统二的方法二
交流群:315249378
如有不正确,欢迎交流讨论!
分享到:
相关推荐
3、外观模式lua实现 4、适配器模式lua实现 5、组合模式lua实现 6、桥接模式lua实现 7、享元模式lua实现 行为模式 1、策略模式lua实现 2、模板方法模式lua实现 3、观察者模式lua实现 4、状态模式lua实现 5、迭代器...
lua实现 basse64 lua lua实现 basse64 lua lua实现 basse64 lua
Lua 设计模式高清版,包含多种设计模式的lua实现。Lua 设计模式高清版,包含多种设计模式的lua实现。Lua 设计模式高清版,包含多种设计模式的lua实现。
lua实现webservice调用 通过gsoap 实现 C/C++ 调用web service
cocos2d-lua 实现富文本
Lua实现跟py的sleep一样的定时器功能,在倒计时结束时调用函数
MVVM源于MVC(Model-View-Controller)模式,期间还演化出MVP(Model-View-Presenter)模式。MVVM的出现促进了GUI前端开发和后端开发逻辑的分离,提高了前端开发效率。 MVVM的核心是数据驱动即ViewModel,ViewModel是...
解析Lua实现方法 解析Lua实现方法
cocos2dx 虚拟摇杆的lua实现
自己写的中文笔划输入法算法演示程序,用Lua实现的,大家看看有没有参考价值,呵呵
Lua实现PureMVC
Lua实现OOP,可以继承,覆盖,sample里面实现了简单的lua类定义,并封装了简单的事件驱动机制
NGINX + LUA实现复杂的控制
汉诺塔是一种经典的题目,用很多种语言均可实现。 本例子是用lua实现汉诺塔
用LUA实现在stm32平台上的在线编程
Lua语言实现特殊字符过滤,对于使用Lua开发移动端游戏的童鞋非常常用。代码亲测有效,附使用实例
《终极网络服务端编程》的lua server 实现了lua脚本处理服务端逻辑+数据库 lua服务端 c++版服务端客户端(netserver,netclient) lua服务端 就是 c++ netserver项目的lua脚本化版 运行效果 ![image]...
lua类的实现
A* 算法使用Lua实现,保存起来,以后再看。
Nginx+upload+lua实现简单文件上传服务