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

企业网站apph5科技 网站

企业网站app,h5科技 网站,焦作音响网站建设,建网站的公司起什么名好概念#xff1a; 外观模式#xff08;Facade Pattern#xff09;是一种结构型设计模式#xff0c;它提供了一个统一的接口#xff0c;用于访问子系统中的一组接口。外观模式隐藏了子系统的复杂性#xff0c;并将其封装在一个简单易用的接口中#xff0c;使得客户端可以…概念 外观模式Facade Pattern是一种结构型设计模式它提供了一个统一的接口用于访问子系统中的一组接口。外观模式隐藏了子系统的复杂性并将其封装在一个简单易用的接口中使得客户端可以更方便地使用子系统。 特点 提供了一个简化和统一的接口隐藏了底层子系统的复杂性。将客户端与子系统之间解耦降低了客户端代码与子系统之间的直接依赖关系。通过外观类来集中管理和协调多个相关对象提高了代码可维护性和灵活性。 优点 简化客户端与复杂子系统之间的交互过程。隐藏底层实现细节提高代码可读性和可维护性。降低耦合度减少对其他代码影响。 缺点 如果需要修改或扩展功能则可能需要修改外观类本身。外观类承担较多职责时会变得臃肿。 适用场景 当存在一个复杂数量较大且关联紧密的类库时可以使用外观模式将其封装成一个简单易用、统一的接口。当需要简化一个复杂子系统的接口并提供一个更高层次的接口供客户端使用时可以使用外观模式。 实现方式 单一外观类 实现原理 定义一个外观类该类包含对子系统的引用。在外观类中定义方法每个方法代表一个功能或操作。在方法内部调用相应子系统的方法来完成具体逻辑。客户端通过直接调用外观类的方法来使用子系统。 实现代码 // 子系统A class SubSystemA {public void operationA() {System.out.println(SubSystemA operation);} }// 子系统B class SubSystemB {public void operationB() {System.out.println(SubSystemB operation);} }// 外观类 class Facade {private SubSystemA subSystemA;private SubSystemB subSystemB;public Facade() {this.subSystemA new SubSystemA();this.subSystemB new SubSystemB();}public void operation() {subSystemA.operationA();subSystemB.operationB();} }public class Main {public static void main(String[] args) {Facade facade new Facade(); // 创建外观类对象facade.operation(); // 调用外观类的方法实现对子系统的操作} }在上述示例中SubSystemA和SubSystemB分别代表两个子系统。Facade是单一外观类封装了对这两个子系统的引用并提供了一个名为operation()的方法来调用这两个子系统的具体操作。客户端通过创建一个外观数对象并调用其方法来使用子系统。在此示例中客户端只需要与外观类进行交互而无需直接与子系统进行交互。 存在问题   如果有多个不同类型的客户端需要访问不同功能集合则可能需要修改和扩展单一外观类。单一外观类承担了较多职责导致代码变得庞大而复杂。 多个外观类 实现原理 定义多个外观类每个外观类分别与一个或多个子系统相关联。在每个外观类中定义方法每个方法代表一个功能或操作。在方法内部调用相应子系统的方法来完成具体逻辑。客户端根据需要选择合适的外观数进行调用。 实现代码 // 子系统A class SubSystemA {public void operationA() {System.out.println(SubSystemA operation);} }// 子系统B class SubSystemB {public void operationB() {System.out.println(SubSystemB operation);} }// 外观类 class Facade1 {private SubSystemA subSystemA;public Facade1() {this.subSystemA new SubSystemA();}public void operation() {subSystemA.operationA();} }// 另一个外观类 class Facade2 {private SubSystemB subSystemB;public Facade2() {this.subSystemB new SubSystemB();}public void operation() {subSystemB.operationB();} }public class Main {public static void main(String[] args) {Facade1 facade1 new Facade1(); // 创建外观数对象1Facade2 facade2 new Facade2(); // 创建外观数对象2facade1.operation(); // 调用外观数对象1的方法实现对子系统A的操作facade2.operation(); // 调用外观数对象2的方法实现对子系统B的操作} }在上述示例中SubSystemA和SubSystemB分别代表两个不同的子系统。Facade1和Facade2是两个独立的外观类分别封装了对这两个子系统的引用并提供了一个名为 operation() 的方法来调用相应子系统的具体操作。客户端根据需要选择合适的外观类进行调用。在此示例中客户端可以选择使用 Facade1 或 Facade2 来访问特定子系统。这样客户端只需要与所选外观类进行交互而无需直接与各个子系统进行交互。 嵌套调用 实现原理 定义多个外观类每个外观类负责封装和管理特定子系统的操作。在一个外观类的操作方法内部通过创建其他外观类对象并调用其相应的方法来实现嵌套调用。客户端只需要与最上层的外观数进行交互无需关心底层具体子系统。 实现代码 // 子系统A class SubSystemA {public void operationA() {System.out.println(SubSystemA operation);} }// 子系统B class SubSystemB {public void operationB() {System.out.println(SubSystemB operation);} }// 外观类 class Facade1 {private SubSystemA subSystemA;private Facade2 facade2;public Facade1() {this.subSystemA new SubSystemA();this.facade2 new Facade2();}public void operation() {subSystemA.operationA();facade2.operation(); // 嵌套调用Facade2的操作方法} }// 另一个外观类 class Facade2 {private SubSystemB subSystemB;public Facade2() {this.subSystemB new SubSystemB();}public void operation() {subSystemB.operationB();} }public class Main {public static void main(String[] args) {Facade1 facade1 new Facade1(); // 创建外观类对象facade1.operation(); // 调用外观类对象的方法实现对子系统A和子系统B的嵌套调用} }在上述示例中SubSystemA和SubSystemB分别代表两个不同的子系统。Facade1是一个外观类封装了对这两个子系统的引用并提供了一个名为 operation() 的方法来调用相应子系统的具体操作。在 operation() 方法内部除了调用 subsystemA.operationA() 外还创建并使用了 Facade2 对象并通过其 operation() 方法实现对另一个子系统 B 的操作。 客户端只需要与最上层的外观数进行交互即调用 facade1.operation() 方法。这样客户端无需关心底层具体子系统及其嵌套调用逻辑通过外观类的嵌套调用实现了对多个子系统的操作。 存在问题 嵌套过深可能导致代码可读性降低和维护困难。如果有新的子系统加入或旧的子系统变更需要修改和扩展相应的嵌套逻辑。
http://www.eeditor.cn/news/119367/

相关文章:

  • 网站建设公司为什么没有官网dw在线编辑器
  • 哪里有做家教网站的专业的深圳网站建设公司
  • 外网工业设计网站网站注册域名后怎么做
  • 保山公司做网站随州网站建设便宜
  • 苏州优秀网站设计小黄猫传媒有限公司官方首页
  • 四川成都私人网站建设理县网站建设公司
  • 鞍山专业做网站公司科技公司名称大全
  • 深圳手机建网站南方医科大学精品课程建设网站
  • 专业seo站长工具网站如何做传输网盘
  • 番禺网站建设开发那些企业网站做的较好
  • 河北建站公司哪些网站布局设计做的比较好的
  • 黄村做网站哪家快以下哪个选项不属于网络营销的特点
  • 网站源码怎么搭建购买网站模板怎么用
  • 邯郸商城型网站建设怎么建设自己淘宝网站
  • 网站建设谢辞wordpress vip查看插件
  • 前程无忧做简历网站wordpress 怎么传递参数 get参数
  • 做折页的网站用python做网站多吗
  • 网站源码站房地产app
  • 网站建设算研发费用吗软件工程师招聘
  • 网站开发接口哪里有免费永久的云服务器
  • 常宁市城市建设规划管理局网站温州网站排名优化公司
  • 网站建设礻金手指下拉十一srm采购管理系统
  • 网站项目中的工作流程网站用社交图标做链接侵权吗
  • 创新的商城网站建设长沙做网站建设
  • 万博法务网站asp+sql server典型网站建设案例(源码)3
  • 宁波网站推广软件服务成都建设局官方网站
  • 网站开发成本如何账务处理怎样建设数字中国
  • 怎么知道自己的网站被k网站策划建站
  • 厦门网站制作公司推荐京东小程序入口
  • 建设校园网站个人直播网站开发