【风趣的解释】
Facade Mode
美眉们越来越聪明了,知道男人宁愿花点钱也不愿意陪她们逛街。是男人,你懂得!美眉们都学会网购了,没事闲着就在淘宝上逛 ,免去了整天拖着男人在商场里溜达,付个款简单的跟“1”一样。在支付宝输个密码、点个确定就OK。这个支付界面就是一个外观模式很好的例子,只需用户执行简单的操作,就能自动完成很复杂的功能(处理买家、卖家、快递、银行之间的业务)。
【正式的解释】
外观模式
外观模式为子系统中的一组接口提供一个统一的高层接口,使得子系统更易于使用。
【Python版】
#-*- coding:utf-8 -*-
#支付系统
class PaySystm(object):
def pay(self):
print "Payments completed."
#卖家系统
class SellerSystem(object):
def sendOut(self):
print "Seller sended out."
#快递系统
class ExpressSystem(object):
def express(self):
print "Expressors delivered."
#高层接口,简单易用,只能支付一次哦
class Facade(object):
__instance = None
def __new__(cls, *args, **kwargs):
if not cls.__instance:
paySys = PaySystm()
paySys.pay()
sellerSys = SellerSystem()
sellerSys.sendOut()
expSys = ExpressSystem()
expSys.express()
cls.__instance = super(cls.__class__, cls).__new__(
cls, *args, **kwargs)
return cls.__instance
if __name__ == "__main__":
facade = Facade()
"""
Payments completed.
Seller sended out.
Expressors delivered.
"""
【JS版】
//支付系统
function PaySystem(){
}
PaySystem.prototype.pay = function(){
console.log('Payments completed.');
};
//卖家系统
function SellerSystem(){
}
SellerSystem.prototype.sendOut = function(){
console.log('Seller sended out.');
};
//快递系统
function ExpressSystem(){
}
ExpressSystem.prototype.express = function(){
console.log('Expressors delivered.');
}
//高层接口,简单易用,只能支付一次哦
function Facade(){
if(typeof Facade.instance == 'object'){
return Facade.instance;
}
var paySys,
sellerSys,
expSys;
paySys = new PaySystem();
paySys.pay();
sellerSys = new SellerSystem();
sellerSys.sendOut();
expSys = new ExpressSystem();
expSys.express();
Facade.instance = this;
}
var facade = new Facade();
/*console out
Payments completed.
Seller sended out.
Expressors delivered.
*/
网友评论