当前位置: 首页 > 编程笔记 >

C++:facade(外观)模式

沈俊美
2023-04-24

为系统中一组接口提供一个(稳定)的界面,Facade定义了一个高层接口,这个接口使得子系统更加容易复用。

门面模式的优点:

减少系统的相互依赖

提高了灵活性

提高安全性

门面模式的缺点:

门面模式最大的缺点就是不符合开闭原则, 对修改关闭, 对扩展开放, 看看我们那个门面对象吧, 它可是重中之重, 一旦在系统投产后发现有一个小错误, 你怎么解决? 完全遵从开闭原则, 根本没办法解决。 继承? 覆写? 都顶不上用, 唯一能做的一件事就是修改门面角色的代码, 这个风险相当大, 这就需要大家在设计的时候慎之又慎, 多思考几遍才会有好收获。

门面模式的应用场景:

1. 为一个复杂的模块或子系统提供一个供外界访问的接口

2. 子系统相对独立——外界对子系统的访问只要黑箱操作即可

3. 预防低水平人员带来的风险扩散

class ClassA {
public:
		void doSomethingA() {
		//业务逻辑
	}
};
class ClassB {
public:
	void doSomethingB() {
		//业务逻辑
	}
};
class ClassC {
public:
	void doSomethingC() {
		//业务逻辑
	}
};

class Facade {
	//被委托的对象
	ClassA* a = new ClassA();
	ClassB* b = new ClassB();
	ClassC* c = new ClassC();

	//提供给外部访问的方法
	void methodA() {
		a->doSomethingA();
	}
	void methodB() {
		b->doSomethingB();
	}
	void methodC() {
		c->doSomethingC();
	}
}
 类似资料:
  • 外观模式在复杂的业务系统上提供了简单的接口。如果直接把业务的所有接口直接暴露给使用者,使用者需要单独面对这一大堆复杂的接口,学习成本很高,而且存在误用的隐患。如果使用外观模式,我们只要暴露必要的 API 就可以了。 下图演示了外观模式的基本概念: API 的使用者完全不知道这内部的业务逻辑有多么复杂。当我们有大量的类并且它们使用起来很复杂而且也很难理解的时候,外观模式是一个十分理想的选择。 外观模

  • 如何使用外观模式 现在我们用 PersistencyManager 来管理专辑数据,用 HTTPClient 来处理网络请求,项目中的其他类不应该知道这个逻辑。他们只需要知道 LibraryAPI 这个“外观”就可以了。 为了实现外观模式,应该只让 LibraryAPI 持有 PersistencyManager 和 HTTPClient 的实例,然后 LibraryAPI 暴露一个简单的接口给其

  • 本文向大家介绍java设计模式之外观模式(Facade),包括了java设计模式之外观模式(Facade)的使用技巧和注意事项,需要的朋友参考一下 概述 外部与内部子系统通信时必须通过的一个统一的外观模式对象进行,就是外观模式,也称门面模式。一般而言,Facade模式是为了降低客户端与实现化层之间的依赖性。外观模式的用意是为子系统提供一个集中化和简化的沟通渠道。 UML类图 在上面的UML图中,出

  • 本文向大家介绍详解PHP中的外观模式facade pattern,包括了详解PHP中的外观模式facade pattern的使用技巧和注意事项,需要的朋友参考一下 关于facade这个词的翻译 facade这个词,原意指的是一个建筑物的表面、外观,在建筑学中被翻译为“立面”这个术语,国内对facade这个词的关注,可能更多要依赖于laravel的流行,似乎都一致把laravel里的facade翻译

  • 本文向大家介绍解析C#设计模式编程中外观模式Facade Pattern的应用,包括了解析C#设计模式编程中外观模式Facade Pattern的应用的使用技巧和注意事项,需要的朋友参考一下 实例引入 在家庭影院中,有灯光,屏幕,投影机,功放机,DVD 播放器这几个基本的工具: 灯光,可以关闭灯光和打开灯光。 投影机,可以打开和关闭投影机。 屏幕,可以打开和关闭。 功放机,可以关闭音量和打开音量。

  • 本文向大家介绍PHP设计模式(九)外观模式Facade实例详解【结构型】,包括了PHP设计模式(九)外观模式Facade实例详解【结构型】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP设计模式:外观模式Facade。分享给大家供大家参考,具体如下: 1. 概述      外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂