网站开源是什么意思,西安做网站科技有限公司,长沙视频制作公司,二手网站建设方案概述 外观模式#xff08;Facade Pattern#xff09;又名门面模式#xff0c;隐藏系统的复杂性#xff0c;并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式#xff0c;它向现有的系统添加一个接口#xff0c;来隐藏系统的复杂性。该模式…概述 外观模式Facade Pattern又名门面模式隐藏系统的复杂性并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式它向现有的系统添加一个接口来隐藏系统的复杂性。该模式对外有一个统一接口外部应用程序不用关心内部子系统的具体的细节这样会大大降 低应用程序的复杂度提高了程序的可维护性。
外观Facade模式包含以下主要角色
子系统Sub System角色实现系统的部分功能客户可以通过外观角色访问它。外观Facade角色为多个子系统对外提供一个共同的接口。
案例
随着科技的发展生活中很多东西都与科技融合例如我们房间中的一些智能家居可以通过感应或是手机远程遥控来进行控制下面我们就距离模拟一个app进行控制房间的热水器和室灯
接口
首先创建一个外观接口定义了开与关两个功能
public interface IShape
{public void on();public void off();
}
创建实现接口的实体类
然后分别创建热水器和室灯来实现此接口
热水器
public class WaterHeater:IShape
{public void on(){Console.WriteLine(开启热水器);}public void off(){Console.WriteLine(关闭热水器);}
}
室灯
public class Light:IShape
{public void on(){Console.WriteLine(开启灯光);}public void off(){Console.WriteLine(关闭灯光);}
}
外观类
创建一个控制器app在此类中有一个button方法接收一个字符串参数message。根据message的值它会调用on或off方法分别开启或关闭灯和热水器。如果message既不是一键开启也不是一键关闭那么它将在控制台打印一个未识别出命令。
public class IntelligentApp
{private Light _light new();private WaterHeater _waterHeater new();public void Button(String message){if (message (一键开启)){on();}else if (message (一键关闭)){off();}else{Console.WriteLine(未识别出命令);}}void on(){_light.on();_waterHeater.on();}void off(){_light.off();_waterHeater.off();}
}
测试 总结
优点
简化接口外观模式提供了一个统一的接口用来访问子系统中的一群接口。这个接口使得子系统更容易使用。解耦外观模式可以解耦子系统与客户端使得子系统的变化不会影响到客户端。提高安全性通过外观类可以对子系统的访问进行更严格的控制防止对子系统的误用。提高了灵活性和可维护性通过将复杂的子系统逻辑封装在外观类中可以降低代码的复杂度提高了代码的灵活性和可维护性。
缺点
不符合开闭原则如果需要增加新的子系统或者移除子系统可能需要修改外观类这就违反了开闭原则。增加了系统的复杂性虽然外观模式可以简化客户端的使用但是在系统内部可能会增加系统的复杂性。有可能产生过度封装如果外观类封装的功能过多那么可能会导致外观类变得过于庞大难以维护和测试。
使用场景
对分层结构系统构建时使用外观模式定义子系统中每层的入口点可以简化子系统之间的依赖关 系。 当一个复杂系统的子系统很多时外观模式可以为系统设计一个简单的接口供外界访问。 当客户端与多个子系统之间存在很大的联系时引入外观模式可将它们分离从而提高子系统的独 立性和可移植性。