结构型---外观模式(Facade Pattern)
2024-10-19 19:52:23
定义
外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。使用外观模式时,我们创建了一个统一的类,用来包装子系统中一个或多个复杂的类,客户端可以直接通过外观类来调用内部子系统中方法,从而外观模式让客户和子系统之间避免了紧耦合。
外观模式代码:
/// <summary>
/// 子系统A
/// </summary>
public class ClassA
{
public void doSomethingA()
{
//业务逻辑
}
}
/// <summary>
/// 子系统B
/// </summary>
public class ClassB
{
public void doSomethingB()
{
//业务逻辑
}
}
/// <summary>
/// 子系统C
/// </summary>
public class ClassC
{
public void doSomethingC()
{
//业务逻辑
}
}
/// <summary>
/// 门面对象
/// </summary>
public class Facade
{
private ClassA a = new ClassA();
private ClassB b = new ClassB();
private ClassC c = new ClassC();
//提供给外部访问的方法
public void mothodA()
{
this.a.doSomethingA();
}
public void mothodB()
{
this.b.doSomethingB();
}
public void mothodC()
{
this.c.doSomethingC();
}
}
外观的优缺点
优点:
- 外观模式对客户屏蔽了子系统组件,从而简化了接口,减少了客户处理的对象数目并使子系统的使用更加简单。
- 外观模式实现了子系统与客户之间的松耦合关系,而子系统内部的功能组件是紧耦合的。松耦合使得子系统的组件变化不会影响到它的客户。
缺点:
- 如果增加新的子系统可能需要修改外观类或客户端的源代码,这样就违背了”开——闭原则“(不过这点也是不可避免)。
使用场景
在以下情况下可以考虑使用外观模式:
- 外一个复杂的子系统提供一个简单的接口
- 提供子系统的独立性
- 在层次化结构中,可以使用外观模式定义系统中每一层的入口。其中三层架构就是这样的一个例子。
最新文章
- 解决安卓微信浏览器中location.reload 或者 location.href失效的问题
- JavaScript基本语法(二)
- 关于MYSQL四种引擎
- 操作系统开发系列—12.a.从Loader到内核 ●
- 理解flex_对齐
- WPF之TextBox
- Apache Storm技术实战之1 -- WordCountTopology
- 利用Java Service Wrapper将java项目添加到windows服务中
- ubuntu 折腾之路
- arcgis切图问题
- 聊一聊JQ中delegate事件委托的好处
- TsBatis 预览
- [Hive安装问题]
- (转)es6中object.create()和object.assign()
- 轻量架构ShuffleNet V2:从理论复杂度到实用设计准则
- 特别翔实的adaboost分类算法讲解 转的
- redis集群与分片(2)-Redis Cluster集群的搭建与实践
- Jenkins忘记用户名密码
- 设计模式之——外观or门面模式
- VUE 采坑之旅-- Mint-ui 按需引入报出Module build failed: Error: Couldn&#39;t find preset ";es2015"; relative to directory ";C:\\phpStudy\\PHPTutorial\\WWW\\text\\vuep\\vue-demo";