gpt4 book ai didi

C++设计模式之外观模式(Facade)

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章C++设计模式之外观模式(Facade)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

外观模式应该是程序员最下意识用的一种模式,比如我们习惯性的对复杂系统做一个封装接口。外观模式其本质是对一堆复杂对象和应用的接口抽象,对它们进行封装隔离,对于调用者来说只需要关系接口的实现,而不需要知道内部有哪些对象和调用.

作用 。

为模块的一组接口提供一致的界面,定义了一个高层接口,这个接口使得这一模块更加容易使用.

类视图 。

C++设计模式之外观模式(Facade)

实现 。

  。

?
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//复杂或多对象
class objectOne
{
   public void operator()
   {
     cout<< "operator one\n" ;
   }
}
class objectTwo
{
   public void operator()
   {
     cout<< "operator two\n" ;
   }
}
class objectThree
{
   public void operator()
   {
     cout<< "operator three\n" ;
   }
}
class objectFour
{
   public void operator()
   {
     cout<< "operator four\n" ;
   }
}
//外观实现
class Facade
{
   objectOne one;
   objectTwo two;
   objectThree three;
   objectFour four;
 
   public Facade()
   {
     obj1 = new objectOne();
     obj2 = new objectTwo();
     obj3 = new objectThree();
     obj4 = new objectFour();
   }
   public void MethodA()
   {
     cout<< " Fun A()-----\n" );
     obj1.operator();
     obj2.operator();
     obj3.operator();
     obj4.operator();
   }
   public void MethodB()
   {
     cout<< " Fun B()-----\n" );
     obj4.operator();
     obj3.operator();
     obj2.operator();
     obj1.operator();
   }
}
//调用
void main()
{
   Facade facade = new Facade();
   facade.MethodA();
   facade.MethodB();
}

应用场景 。

  • 构建上下层次的模块时,如果上下进行调用,则会出现强耦合,用外观模式实现上下级模块的接口,简化相互调用的交叉,降低上下层的耦合度;
  • 在多个复杂模块相互协作工作时,向上用外观类提炼出高层接口,对外隐藏其内部的实现并隔离变化;
  • 对单独模块或者对复杂模块的封装,提炼出外观类进行封装访问,解耦合。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

原文链接:https://www.cnblogs.com/chencarl/archive/2018/03/27/8657313.html 。

最后此篇关于C++设计模式之外观模式(Facade)的文章就讲到这里了,如果你想了解更多关于C++设计模式之外观模式(Facade)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com