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

学院网站建设服务宗旨珠海网站设计价格

学院网站建设服务宗旨,珠海网站设计价格,东莞市建筑设计院,建设银行企业信息门户网站目录 一、 啥是外观模式?二、 为什么要用外观模式?三、 外观模式的实现方式四、 外观模式的优缺点五、 外观模式的应用场景六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支…

在这里插入图片描述

目录

    • 一、 啥是外观模式?
    • 二、 为什么要用外观模式?
    • 三、 外观模式的实现方式
    • 四、 外观模式的优缺点
    • 五、 外观模式的应用场景
    • 六、 总结

🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支持一下,感谢🤗!
🌟了解桥接模式请看: (九)趣学设计模式 之 桥接模式!

这篇文章带你详细认识一下设计模式中的外观模式

一、 啥是外观模式?

想象一下,你想做一道复杂的菜 🍲 (比如:佛跳墙),你需要准备各种食材 🥕🍄🍖、处理食材 🔪、烹饪食材 🔥等等一系列操作。 如果每次做菜都要手动完成这些步骤,是不是很麻烦 😫? 这时候你可以使用一个“一键烹饪包” 📦,只需要按照说明书操作,就可以自动完成所有步骤!

外观模式,就是为子系统中的一组接口提供一个统一的接口! 外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 ➕。

简单来说,就是提供一个“傻瓜式”的操作界面,隐藏复杂的内部逻辑! 📦

  • 你想简化复杂系统的使用: 就像你想用一个“一键烹饪包”做出复杂的菜 🍲!
  • 你想降低子系统之间的耦合度: 就像你不想让用户直接依赖于各种食材和烹饪步骤 🥕🍄🍖🔪🔥!
  • 你想为不同的用户提供不同的接口: 就像你想为新手提供简单的烹饪包,为厨师提供更详细的食材和烹饪方法 👨‍🍳!

二、 为什么要用外观模式?

用外观模式,好处多多 👍:

  • 简化接口: 为复杂系统提供一个简单的接口 📦!
  • 降低耦合度: 减少客户端与子系统之间的依赖 🔗!
  • 提高灵活性: 可以方便地修改子系统的内部实现,而不会影响客户端 🤸!
  • 提高安全性: 可以控制客户端对子系统的访问权限 🔒!

三、 外观模式的实现方式

外观模式主要包含以下几个角色:

  • Facade(外观类): 为子系统中的一组接口提供一个统一的接口。 📦 (比如:“一键烹饪包”)
  • SubSystem(子系统): 实现子系统的功能,处理Facade对象指派的任务。 🥕🍄🍖🔪🔥 (比如:食材准备、食材处理、烹饪)

代码示例:

// 子系统:食材准备
public class IngredientPreparation {public void prepareVegetables() {System.out.println("准备蔬菜");}public void prepareMeat() {System.out.println("准备肉类");}
}// 子系统:食材处理
public class IngredientProcessing {public void chopVegetables() {System.out.println("切菜");}public void marinateMeat() {System.out.println("腌制肉类");}
}// 子系统:烹饪
public class Cooking {public void stirFry() {System.out.println("翻炒");}public void simmer() {System.out.println("炖煮");}
}// 外观类:“一键烹饪包”
public class OneClickCookingPackage {private IngredientPreparation preparation;private IngredientProcessing processing;private Cooking cooking;public OneClickCookingPackage() {this.preparation = new IngredientPreparation();this.processing = new IngredientProcessing();this.cooking = new Cooking();}public void cookDish() {System.out.println("开始烹饪...");preparation.prepareVegetables(); // 准备蔬菜preparation.prepareMeat(); // 准备肉类processing.chopVegetables(); // 切菜processing.marinateMeat(); // 腌制肉类cooking.stirFry(); // 翻炒cooking.simmer(); // 炖煮System.out.println("烹饪完成!");}
}// 客户端
public class Client {public static void main(String[] args) {OneClickCookingPackage cookingPackage = new OneClickCookingPackage(); // 创建“一键烹饪包”对象cookingPackage.cookDish(); // 开始烹饪}
}

分析:

  • IngredientPreparation, IngredientProcessing, Cooking 是子系统,分别实现了食材准备、食材处理和烹饪的功能。
  • OneClickCookingPackage 是外观类,组合了子系统对象,并提供了 cookDish() 方法,简化了烹饪的操作。

输出结果:

开始烹饪...
准备蔬菜
准备肉类
切菜
腌制肉类
翻炒
炖煮
烹饪完成!

四、 外观模式的优缺点

优点:

  • 简化接口 📦!
  • 降低耦合度 🔗!
  • 提高灵活性 🤸!
  • 提高安全性 🔒!

缺点:

  • 不能很好地限制客户使用子系统类,如果客户知道子系统类,还是可以直接使用 😫!
  • 不符合开闭原则,如果需要增加新的子系统,需要修改外观类 😫!

五、 外观模式的应用场景

  • 当你要为一个复杂子系统提供一个简单接口时: 就像“一键烹饪包” 🍲!
  • 当客户程序与多个子系统之间存在很大的依赖性时: 就像客户端需要直接操作各种食材和烹饪步骤 🥕🍄🍖🔪🔥!
  • 当你需要构建一个层次结构的子系统时,使用外观模式定义子系统中每层的入口点: 就像为不同的用户提供不同的烹饪方法 👨‍🍳!
  • 编译器: 编译器可以将复杂的编译过程封装起来,对外提供一个简单的编译接口。

六、 总结

  • 外观模式就像提供一个“傻瓜式”的操作界面,隐藏复杂的内部逻辑! 📦
  • 主要包含外观类和子系统两个角色! 🎭
  • 优点是简化接口、降低耦合度、提高灵活性、提高安全性! 👍
  • 缺点是不能很好地限制客户使用子系统类、不符合开闭原则! 👎
  • 适用于需要简化复杂系统的使用,或者需要降低子系统之间耦合度的场景! 🎯

希望这个例子能让你更容易理解外观模式! 💯 祝你学习愉快! 😄
看完请看:(十 一)趣学设计模式 之 组合模式!


文章转载自:

http://ADLKQ4GT.yrhsg.cn
http://iexVmvew.yrhsg.cn
http://bhrZuLm1.yrhsg.cn
http://BUnrpttO.yrhsg.cn
http://c3l8YbSW.yrhsg.cn
http://2yvfniWr.yrhsg.cn
http://mtlakGvj.yrhsg.cn
http://7daIh7u3.yrhsg.cn
http://AT35yBpw.yrhsg.cn
http://2rY93wUp.yrhsg.cn
http://WQsPSoU6.yrhsg.cn
http://vhD4h4pN.yrhsg.cn
http://NY9c33TO.yrhsg.cn
http://i75ZwDhc.yrhsg.cn
http://y3HFXrB1.yrhsg.cn
http://DUhLEZZJ.yrhsg.cn
http://pYZx1GN0.yrhsg.cn
http://8QBXqmtZ.yrhsg.cn
http://SYZSBtH6.yrhsg.cn
http://wsZWNIbC.yrhsg.cn
http://zLpHCbIO.yrhsg.cn
http://U0DGN1vJ.yrhsg.cn
http://p8LDvfVU.yrhsg.cn
http://0PiBT4D7.yrhsg.cn
http://9hTYhGRz.yrhsg.cn
http://qqJLpCZv.yrhsg.cn
http://XSJUJSZu.yrhsg.cn
http://Pq8I9mP7.yrhsg.cn
http://NGpWc6VY.yrhsg.cn
http://409nqXbu.yrhsg.cn
http://www.dtcms.com/wzjs/701396.html

相关文章:

  • 个人站长怎么样做网站才不会很累外贸网络推广怎样做
  • 长沙网站制作的网站建设公司倒闭
  • 深圳建设材料价格网站百度 搜索到手机网站
  • 网站建设近五年参考文献wordpress分页阅读
  • 建立网站线上营销冲电气软件 网站建设
  • 网站没有关键词收录企业推广平台排行榜
  • 网页设计制作网站总结产品软文范例大全
  • 小语种外贸网站做网站加推广
  • 网站做重新做_域名不换_空间想转到新网站这边工作细胞樱花动漫
  • 临汾万词霸屏网站建设免费咨询临汾网站建设
  • 设计师个人网站源码高端网站建设 j磐石网络
  • 云主机搭建asp网站建设教育培训的网站
  • 建设网站的标语达内培训网站开发
  • 广告投放网站重庆飘逸科技有限公司
  • 网站地址推荐台州律师网站建设
  • 做产品网站营销推广在国外做外国的网站合法吗
  • 企业网站建设变相收取等级保护费6商城网站建设源码
  • 做视频网站 投入怎样用自己的pid做搜索网站
  • 织梦行业网站模板哪个网站可以用MC皮肤做图片
  • 什么网站有女人跟狗做的网页开发者工具怎么用
  • 苏州自助建站模板邳州城乡建设局网站
  • 电商食品网站建设河北建设工程信息网天行建和园
  • 南京网站设计公司兴田德润电话多少软装设计风格
  • 网站建设专用名词互动平台罗马复兴
  • wordpress程序网站模板网页制作
  • 做网站用的动漫资料江苏省建设局报考网站
  • 长沙网站制作的seo优化博客
  • 做外贸有那些网站平台dedecms网站后台很卡
  • 做电影网站需要的服务器配置wordpress登录没链接
  • 黄图网站有哪些 推荐国内做钢铁的网站