博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式--门面模式C++实现
阅读量:4963 次
发布时间:2019-06-12

本文共 833 字,大约阅读时间需要 2 分钟。

门面模式C++实现

1定义facade

要求一个子系统的外部接口与其内部的通信必须通过一个统一的接口进行。门面模式提供一个高层次的接口,使得子系统更容易视同

注:门面模式注重统一对象,也就是提供一个访问子系统的接口,除了这个接口不允许有任何访问子系统的行为产生

2类图

 

facade门面角色,是外界访问子系统内部的唯一通道

subsystem子系统角色,可以同时是一个或者多个子系统,每个子系统不是单独的类而是一个类的集合

3实现

//子系统

class classA

{

public:

  void doSomething()

  {

    //子系统业务逻辑

  }

};

class classB

{

public:

  void doSomething()

  {

    //子系统业务逻辑

  }

};

//门面对象

class Facade

{

private:

  classA a;

  classB b;

public:

  void doSomethingA()

  {

    a.doSomething();

  }

  void doSomethingB()

  {

    b.doSomething();

  }

};

4应用

①优点

减少系统的相互依赖

提高灵活性

提高安全性

②缺点

不符合开闭原则,对修改关闭,对扩展开放。因为系统内部的修改都需要变动门面

③使用场景

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

子系统相对独立--外接对子系统的访问只要黑箱操作即可

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

④注意事项

门面个数可以大于一的情况:

门面庞大到不能忍受的程度

子系统可以提供不同的访问路径

注:门面不参与子系统内的逻辑业务---如果子系统内部逻辑需要改动后交给外接,那么久将之封装,然后交给门面而非让门面处理逻辑

 

转载于:https://www.cnblogs.com/lang5230/p/5335400.html

你可能感兴趣的文章
对员工宽容的公司 都死掉了
查看>>
python基础五
查看>>
BZOJ 1013: [JSOI2008]球形空间产生器sphere
查看>>
DevExpress TreeList添加右键菜单问题
查看>>
AEAI Portal V3.5.2门户集成平台发版说明
查看>>
[转]我们这么努力,也不过是为了成为一个普通人。
查看>>
G面经prepare: Chucked Palindrome
查看>>
CSS3 -webkit-transform
查看>>
在Linux系统里安装Virtual Box的详细步骤
查看>>
手动卸载的vs2010
查看>>
C#_初识之HelloWorld
查看>>
QT5:先导篇 加载资源
查看>>
Linux的日常(1)--Linux系统
查看>>
[leetcode]Construct Binary Tree from Preorder and Inorder Traversal
查看>>
玩转游戏搜索
查看>>
关于HTML之拖动
查看>>
[Toolchain]arm-none-linux-gnueabin编译
查看>>
静态博客阅读次数与评论解决方案
查看>>
c# 调用数据库连接属性窗口,并接收返回连接字符串
查看>>
css3中-moz、-ms、-webkit 是什么意思
查看>>