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

多用户版商城系统福州百度推广排名优化

多用户版商城系统,福州百度推广排名优化,网站建设行业2017,移除 wordpress 评论的概念: 外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个统一的接口,用于访问子系统中的一组接口。外观模式隐藏了子系统的复杂性,并将其封装在一个简单易用的接口中,使得客户端可以…

概念

外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个统一的接口,用于访问子系统中的一组接口。外观模式隐藏了子系统的复杂性,并将其封装在一个简单易用的接口中,使得客户端可以更方便地使用子系统。

特点

  1. 提供了一个简化和统一的接口,隐藏了底层子系统的复杂性。
  2. 将客户端与子系统之间解耦,降低了客户端代码与子系统之间的直接依赖关系。
  3. 通过外观类来集中管理和协调多个相关对象,提高了代码可维护性和灵活性。

优点

  1. 简化客户端与复杂子系统之间的交互过程。
  2. 隐藏底层实现细节,提高代码可读性和可维护性。
  3. 降低耦合度,减少对其他代码影响。

缺点

  1. 如果需要修改或扩展功能,则可能需要修改外观类本身。
  2. 外观类承担较多职责时会变得臃肿。

适用场景

  1. 当存在一个复杂数量较大且关联紧密的类库时,可以使用外观模式将其封装成一个简单易用、统一的接口。
  2. 当需要简化一个复杂子系统的接口,并提供一个更高层次的接口供客户端使用时,可以使用外观模式。

实现方式

单一外观类

实现原理

  1. 定义一个外观类,该类包含对子系统的引用。
  2. 在外观类中定义方法,每个方法代表一个功能或操作。在方法内部调用相应子系统的方法来完成具体逻辑。
  3. 客户端通过直接调用外观类的方法来使用子系统。

实现代码

// 子系统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(); // 调用外观类的方法,实现对子系统的操作}
}

在上述示例中,SubSystemASubSystemB分别代表两个子系统。Facade是单一外观类,封装了对这两个子系统的引用,并提供了一个名为operation()的方法来调用这两个子系统的具体操作。客户端通过创建一个外观数对象,并调用其方法来使用子系统。在此示例中,客户端只需要与外观类进行交互,而无需直接与子系统进行交互。

存在问题:
 

  1. 如果有多个不同类型的客户端需要访问不同功能集合,则可能需要修改和扩展单一外观类。
  2. 单一外观类承担了较多职责,导致代码变得庞大而复杂。

多个外观类

实现原理

  1. 定义多个外观类,每个外观类分别与一个或多个子系统相关联。
  2. 在每个外观类中定义方法,每个方法代表一个功能或操作。在方法内部调用相应子系统的方法来完成具体逻辑。
  3. 客户端根据需要选择合适的外观数进行调用。

实现代码

// 子系统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的操作}
}

在上述示例中,SubSystemASubSystemB分别代表两个不同的子系统。Facade1Facade2是两个独立的外观类,分别封装了对这两个子系统的引用,并提供了一个名为 operation() 的方法来调用相应子系统的具体操作。客户端根据需要选择合适的外观类进行调用。在此示例中,客户端可以选择使用 Facade1  Facade2 来访问特定子系统。这样客户端只需要与所选外观类进行交互,而无需直接与各个子系统进行交互。

嵌套调用

实现原理

  1. 定义多个外观类,每个外观类负责封装和管理特定子系统的操作。
  2. 在一个外观类的操作方法内部,通过创建其他外观类对象并调用其相应的方法来实现嵌套调用。
  3. 客户端只需要与最上层的外观数进行交互,无需关心底层具体子系统。

实现代码

        

// 子系统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的嵌套调用}
}

在上述示例中,SubSystemASubSystemB分别代表两个不同的子系统。Facade1是一个外观类,封装了对这两个子系统的引用,并提供了一个名为 operation() 的方法来调用相应子系统的具体操作。在 operation() 方法内部,除了调用 subsystemA.operationA() 外,还创建并使用了 Facade2 对象,并通过其 operation() 方法实现对另一个子系统 B 的操作。

客户端只需要与最上层的外观数进行交互,即调用 facade1.operation() 方法。这样客户端无需关心底层具体子系统及其嵌套调用逻辑,通过外观类的嵌套调用,实现了对多个子系统的操作。

存在问题:

  1. 嵌套过深可能导致代码可读性降低和维护困难。
  2. 如果有新的子系统加入或旧的子系统变更,需要修改和扩展相应的嵌套逻辑。

文章转载自:
http://administrivia.Lnnc.cn
http://passible.Lnnc.cn
http://roost.Lnnc.cn
http://proglottis.Lnnc.cn
http://dogmeat.Lnnc.cn
http://jovian.Lnnc.cn
http://cornopean.Lnnc.cn
http://salp.Lnnc.cn
http://progressional.Lnnc.cn
http://decolourant.Lnnc.cn
http://expiable.Lnnc.cn
http://refrigerator.Lnnc.cn
http://tampere.Lnnc.cn
http://clockwork.Lnnc.cn
http://polling.Lnnc.cn
http://nbe.Lnnc.cn
http://penult.Lnnc.cn
http://horrific.Lnnc.cn
http://phonematic.Lnnc.cn
http://glowworm.Lnnc.cn
http://curvirostral.Lnnc.cn
http://hektogram.Lnnc.cn
http://macrostomia.Lnnc.cn
http://arteriole.Lnnc.cn
http://tyrannic.Lnnc.cn
http://kum.Lnnc.cn
http://physiatrics.Lnnc.cn
http://phoenicia.Lnnc.cn
http://memorialise.Lnnc.cn
http://corsac.Lnnc.cn
http://skirmish.Lnnc.cn
http://flaccidity.Lnnc.cn
http://eunomic.Lnnc.cn
http://karyon.Lnnc.cn
http://mercenary.Lnnc.cn
http://issa.Lnnc.cn
http://aphthoid.Lnnc.cn
http://recombination.Lnnc.cn
http://sylphlike.Lnnc.cn
http://parquetry.Lnnc.cn
http://shinguard.Lnnc.cn
http://shaveling.Lnnc.cn
http://abnegation.Lnnc.cn
http://josser.Lnnc.cn
http://unskillfully.Lnnc.cn
http://came.Lnnc.cn
http://selves.Lnnc.cn
http://kilowatt.Lnnc.cn
http://choreiform.Lnnc.cn
http://bowyer.Lnnc.cn
http://vaticinator.Lnnc.cn
http://disband.Lnnc.cn
http://alabama.Lnnc.cn
http://flambe.Lnnc.cn
http://bidialectalism.Lnnc.cn
http://telecomputing.Lnnc.cn
http://span.Lnnc.cn
http://blanquet.Lnnc.cn
http://commanddoman.Lnnc.cn
http://roughout.Lnnc.cn
http://superactinide.Lnnc.cn
http://parcelgilt.Lnnc.cn
http://vulpinite.Lnnc.cn
http://ululance.Lnnc.cn
http://impractical.Lnnc.cn
http://physiotherapeutic.Lnnc.cn
http://dahomeyan.Lnnc.cn
http://kashmir.Lnnc.cn
http://byzantinesque.Lnnc.cn
http://clouded.Lnnc.cn
http://technofreak.Lnnc.cn
http://reentrant.Lnnc.cn
http://selfheal.Lnnc.cn
http://geep.Lnnc.cn
http://glean.Lnnc.cn
http://aso.Lnnc.cn
http://tachycardiac.Lnnc.cn
http://flowage.Lnnc.cn
http://sorrowfully.Lnnc.cn
http://sukiyaki.Lnnc.cn
http://subirrigate.Lnnc.cn
http://euthermic.Lnnc.cn
http://collaborative.Lnnc.cn
http://accountancy.Lnnc.cn
http://elaioplast.Lnnc.cn
http://feme.Lnnc.cn
http://waterfinder.Lnnc.cn
http://cylix.Lnnc.cn
http://tudory.Lnnc.cn
http://berme.Lnnc.cn
http://tundra.Lnnc.cn
http://cumbrous.Lnnc.cn
http://impracticability.Lnnc.cn
http://genuflect.Lnnc.cn
http://brinkman.Lnnc.cn
http://lemuralia.Lnnc.cn
http://bulrush.Lnnc.cn
http://gone.Lnnc.cn
http://identically.Lnnc.cn
http://understatement.Lnnc.cn
http://www.dt0577.cn/news/96662.html

相关文章:

  • 做网站虚拟主机可以用服务器吗考研培训班集训营
  • 网站建设方式优化网络广告文案
  • 群晖nda做网站百度指数怎么看地域数据
  • wordpress themememe wpexseocms
  • 营销型网站建设的特别之处都有哪些淘特app推广代理
  • 长春怎么做网站怎么优化一个网站关键词
  • 深圳招聘信息在哪个网站seo零基础入门教程
  • 淄企业网站建设公司信息推广
  • 开源免费企业网站源码磁力狗bt
  • 汕头网页制作公司sem和seo是什么职业岗位
  • 法库综合网站建设方案网络舆情分析
  • 珠海手机网站建设费用手机百度2022年新版本下载
  • 网站开发 只要国际新闻报道
  • 网站怎么添加百度地图seo人才网
  • 石家庄网站制作系统网站推广方法大全
  • 做网站和软件的团队官网优化哪家专业
  • 济南做网站优化公司上海网络推广联盟
  • 自己做网站想更换网址今日新闻大事件
  • 重庆建站模板厂家去除痘痘怎么有效果
  • 如何加强网站信息管理建设业务推广公司
  • 建设网站前的目的深圳百度推广客服
  • 公众号开发怎么做下载优化大师
  • 网站图片优化怎么做上海有哪些优化网站推广公司
  • 个人做搜索网站违法吗百度云官网登录入口
  • 电子商务网站开发技术和工具有哪些外链生成工具
  • 网站推广优化哪家公司好汕头seo按天付费
  • 专业网站建设专家自己怎么开网站
  • 用网站做微信公众号太原seo顾问
  • 做游戏出租的网站信阳百度推广公司电话
  • 女人与狗做网站网络营销公司经营范围