当前位置: 首页 > news >正文

网站导航面包屑旅游网站首页制作

网站导航面包屑,旅游网站首页制作,建设公司网站征集信息的通知,做一个简单的网站怎么做定义 外观模式#xff08;Facade Pattern#xff09; 是一种结构型设计模式#xff0c;它通过为复杂的子系统提供一个统一的接口#xff0c;使得子系统的使用更加简化。外观模式通常隐藏了复杂的内部子系统#xff0c;使得客户端可以通过一个简单的接口与这些子系统进行交…定义 外观模式Facade Pattern 是一种结构型设计模式它通过为复杂的子系统提供一个统一的接口使得子系统的使用更加简化。外观模式通常隐藏了复杂的内部子系统使得客户端可以通过一个简单的接口与这些子系统进行交互。 核心思想 简化接口通过提供一个简单的接口来封装复杂的子系统。 解耦客户端不需要了解子系统的内部实现只需与外观类交互降低了系统的复杂性。 适用场景 外观模式适用于以下场景 简化复杂系统当系统中有多个复杂的子系统时使用外观模式提供一个简单的接口以减少客户端与子系统的交互复杂度。解耦客户端与子系统客户端无需知道子系统内部的工作原理只需与外观类交互即可。多层次接口当系统提供了多个接口并且这些接口之间有复杂的交互时使用外观模式可以通过统一接口简化调用。 常见应用场景 音响系统控制将复杂的音响系统如播放、调整音量、切换输入源等通过外观模式提供一个简单的接口进行控制。家庭自动化系统例如控制家庭的智能设备照明、安防、温控等可以通过一个统一的控制接口进行操作。 类设计 外观模式的设计通常包括以下角色 1.Facade外观类为客户端提供简化的接口它与子系统进行交互。 2.Subsystem子系统复杂的子系统提供实际的功能实现。 3.Client客户端通过外观类与子系统交互。 代码实现解析 假设我们有一个家庭影院系统系统包括音响、投影仪、DVD 播放器和灯光等多个组件。我们希望通过外观模式来简化控制这些组件的操作。 子系统类设计 #include iostream #include string using namespace std;class Amplifier { public:void on() {cout Amplifier on endl;}void off() {cout Amplifier off endl;}void setVolume(int level) {cout Setting volume to level endl;} };class Projector { public:void on() {cout Projector on endl;}void off() {cout Projector off endl;}void wideScreenMode() {cout Projector in widescreen mode endl;} };class DVDPlayer { public:void on() {cout DVD Player on endl;}void off() {cout DVD Player off endl;}void play(string movie) {cout Playing movie: movie endl;}void stop() {cout Stopping movie endl;} };class Lights { public:void dim(int level) {cout Dimming lights to level % endl;}void on() {cout Lights on endl;} }; 外观类设计: class HomeTheaterFacade { private:Amplifier* amplifier;Projector* projector;DVDPlayer* dvdPlayer;Lights* lights;public:HomeTheaterFacade(Amplifier* amp, Projector* proj, DVDPlayer* dvd, Lights* light) :amplifier(amp), projector(proj), dvdPlayer(dvd), lights(light) {}void watchMovie(string movie) {cout Get ready to watch a movie... endl;lights-dim(10);projector-on();projector-wideScreenMode();amplifier-on();amplifier-setVolume(5);dvdPlayer-on();dvdPlayer-play(movie);}void endMovie() {cout Shutting down the movie theater... endl;lights-on();projector-off();amplifier-off();dvdPlayer-stop();dvdPlayer-off();} }; 客户端调用: int main() {Amplifier* amplifier new Amplifier();Projector* projector new Projector();DVDPlayer* dvdPlayer new DVDPlayer();Lights* lights new Lights();// 创建外观对象简化子系统接口HomeTheaterFacade* homeTheater new HomeTheaterFacade(amplifier, projector, dvdPlayer, lights);// 客户端通过外观类调用子系统的功能homeTheater-watchMovie(Inception);homeTheater-endMovie();delete amplifier;delete projector;delete dvdPlayer;delete lights;delete homeTheater;return 0; } 输出如下: Get ready to watch a movie... Dimming lights to 10% Projector on Projector in widescreen mode Amplifier on Setting volume to 5 DVD Player on Playing movie: Inception Shutting down the movie theater... Lights on Projector off Amplifier off Stopping movie DVD Player off 可以看到客户端通过 HomeTheaterFacade 只调用了 watchMovie 和 endMovie 两个方法就完成了多个子系统的操作。HomeTheaterFacade 为客户端提供了一个简单的接口屏蔽了子系统的复杂性。 类设计分析 1.子系统类这些类Amplifier、Projector、DVDPlayer、Lights是独立的子系统负责实现实际的功能。 每个子系统类都有复杂的内部实现客户端不需要直接与这些类交互。 2.外观类HomeTheaterFacade HomeTheaterFacade 类封装了所有子系统的操作它通过提供简化的 watchMovie 和 endMovie 方法来控制整个家庭影院系统。外观类与所有子系统类交互客户端只需要调用外观类的方法而无需关心如何具体操作每个子系统。 3.客户端客户端代码通过 HomeTheaterFacade 与所有子系统进行交互而无需了解子系统的具体实现。 总结 Facade 模式的优点 简化接口将复杂子系统的接口进行封装提供统一的简单接口。解耦客户端不再与子系统的多个组件交互只与外观类交互减少了系统之间的耦合。提高可维护性外观模式通过将子系统的复杂性隐藏在外观类中使得系统的维护更加容易 Facade 模式的缺点 增加了外观类的复杂性随着子系统的增多外观类可能变得较为庞大维护时需要确保其接口不会被滥用。可能导致过度设计如果系统本身比较简单使用外观模式可能是过度设计增加了不必要的复杂度。 Facade 模式的适用场景 简化复杂的子系统接口当系统有多个复杂的子系统时可以使用外观模式来提供统一的简单接口。降低子系统间的耦合当不同子系统之间的依赖性较强时外观模式能有效隔离这些子系统减少系统间的相互依赖。提供一个高层接口当多个子系统的调用顺序复杂时外观模式能提供一个简化的接口。 总结: 外观模式通过为复杂的系统提供一个简单的接口简化了系统的使用和管理。客户端无需了解系统内部的复杂实现只需要与外观类交互外观类负责协调多个子系统的操作。外观模式通常用于简化客户端与子系统之间的交互并提高系统的可维护性。
http://www.w-s-a.com/news/204070/

相关文章:

  • 家政网站怎么做网站机房建设方案
  • 学校网站建设运行情况2022年近期舆情热点话题
  • 做淘宝需要知道什么网站吗有没有做软件的网站
  • 安丘网站建设制作做网站和微信小程序
  • 京东网站的建设与发展前景黑龙江建设网官网登陆
  • soho的网站怎么做微网站平台建设方案
  • 网站开发下载阿里云oss做视频网站
  • 东莞营销网站制作做一个网站建设
  • 啥网站都能看的浏览器下载网站后台管理系统展望
  • 新建站点步骤汉中 wordpress联盟
  • 坪山网站设计的公司网站 seo 设置
  • 济南网站设计公司排名如何免费注册网站域名
  • 网站开发分工甜妹妹福利wordpress
  • 网站中英文要怎么做网站建设的策划文案
  • 合肥推广外包公司佛山seo
  • 成都网站品牌设计策划课堂网站开发
  • 做直播网站赚钱公司网站空间怎么续费
  • 企业网站制作公司有哪些太原网站建设 thinkphp3.2
  • 云集网站哪个公司做的百度竞价排名怎么做
  • 做网站公司赚钱吗网站建设英语翻译
  • 网络公司除了做网站产品设计作品
  • dede网站模板替换湘潭建设路街道网站
  • 东莞网站优化效果如何网络设计工作
  • 网站备案系统验证码出错的解决方案任丘建设银行网站
  • 个人博客建站wordpress叮当app制作
  • 网站式的公司记录怎么做二手书网站策划书
  • 营销型网站的建设重点是什么帝国程序和WordPress
  • 正能量网站推荐不需要下载巴中网站建设开发公司
  • 学生模拟网站开发西安seo平台
  • 免费的app推广平台免费网站seo