Skip to content

Latest commit

 

History

History
113 lines (79 loc) · 2.97 KB

外观模式.md

File metadata and controls

113 lines (79 loc) · 2.97 KB

外观模式

外观模式(Facade Pattern):外观模式定义了一个高层接口,为子系统中的一组接口提供一个统一的接口。外观模式又称为门面模式,它是一种结构型设计模式模式。

适用场景

  • 1、在开发阶段,子系统往往因为不断的重构演变而越来越复杂,这个时候外部调用他们的程序也越来越困难,这个时候增加外观模式可以提供一个简单的接口,减少他们之间的依赖

  • 2、在维护一个遗留的大型系统的时候,可能这个系统已经变得十分难以维护和扩展了,但是因为它包含非常重要的功能,新的需求开发需要依赖它,此时可以开发一个外观类,来提供设计粗糙或高度复杂的遗留代码的比较清晰的接口。

外观模式

案例

我们就举一个买卖股票的例子:我们知道市场上有很多支股票,假如我们要想买20支股票,如果每一只股票都由我们自己操作,我们会发现十分的繁琐,而且我们还浪费了大量时间。但是如果有基金来操作的话,我们只需要负责基金的买卖就可以了,方便了许多。此时基金就是我们的Facade外观封装类。

未使用基金

我们分别买入和卖出华为小米苹果的股票

华为股票买入卖出

#import "HWStock.h"

@implementation HWStock
///买股票
- (void)buyStock{
NSLog(@"买华为的股票");
}
///卖股票
- (void)sellStock{
NSLog(@"卖华为的股票");
}
@end

小米和苹果都是类似的我们这里就不一一举例

客户端调用

HWStock *HW         = [HWStock new];
XMStock *XM         = [XMStock new];
IPhoneStock *IPhone = [IPhoneStock new];
//=====买股票====
[HW buyStock];
[XM buyStock];
[IPhone buyStock];
NSLog(@"==================");
//卖股票
[HW sellStock];
[XM sellStock];
[IPhone sellStock];

我们的客户端需要同时维护HWStock、XMStock、IPhoneStock三个类,如果需要买入卖出更多的股票的话,我们就需要维护更多的类,越来越麻烦的

使用基金

我们添加基金类FundFacade,有基金类来操作股票的买卖

#import "FundFacade.h"
#import "HWStock.h"
#import "XMStock.h"
#import "IPhoneStock.h"
@implementation FundFacade
///买股票
- (void)buyStock{
HWStock *HW         = [HWStock new];
XMStock *XM         = [XMStock new];
IPhoneStock *IPhone = [IPhoneStock new];

[HW buyStock];
[XM buyStock];
[IPhone buyStock];
NSLog(@"==================");
}
///卖股票
- (void)sellStock{
HWStock *HW         = [HWStock new];
XMStock *XM         = [XMStock new];
IPhoneStock *IPhone = [IPhoneStock new];

[HW sellStock];
[XM sellStock];
[IPhone sellStock];
}
@end

客户端调用

FundFacade *facade = [FundFacade new];
//买入
[facade buyStock];
//卖出
[facade sellStock];

这时客户端的调用变得十分的简单方便了。