0%

设计模式之门面模式和代理模式

设计模式基础(9):门面模式&代理模式

包含门面模式&代理模式两种模式中的C++示例代码、面向的问题、图解两种模式核心思想

门面模式

面向的需求

当需要为一个子系统提供统一的接口,来有效的隔离外部系统和这个子系统。实现子系统之间的高内聚,整体系统的松耦合。

模式的思想

门面模式

关键点

  • 合理封装接口,利用接口去操作子系统中的功能。
  • 注意子系统的高内聚,不要一股脑的扔进去所有东西。

代理模式

面向的需求

有些具体的子类在直接进行访问时是有困难的,此时借助一个中间代理类,一方面实现接口的统一(操作的透明化),另一方面实现访问具体子类的功能。

可以采取的手段有:中间类包含一个具体子类对象,或者是采用网络通信方法等等。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class ISubject{
public:
virtual void process();
};

//Proxy的设计
class SubjectProxy: public ISubject{


public:
virtual void process(){
//对RealSubject的一种间接访问
//....
}
};

class ClientApp{

ISubject* subject;

public:

ClientApp(){
subject=new SubjectProxy();
}

void DoTask(){
//...
subject->process();

//....
}
};

模式思想

代理模式