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

中邦建设工程有限公司网站网站建设公司名字

中邦建设工程有限公司网站,网站建设公司名字,专业拓客团队怎么收费,dw怎么做网站轮播图装饰器模式 Decorator 1、什么是装饰器模式 装饰器模式允许通过将对象放入特殊的包装对象中来为原始对象添加新的行为。这种模式是一种结构型模式#xff0c;因为它通过改变结构来改变被装饰对象的行为。它涉及到一组装饰器类#xff0c;这些类用来包装具体组件。 2、为什…  装饰器模式 Decorator 1、什么是装饰器模式 装饰器模式允许通过将对象放入特殊的包装对象中来为原始对象添加新的行为。这种模式是一种结构型模式因为它通过改变结构来改变被装饰对象的行为。它涉及到一组装饰器类这些类用来包装具体组件。 2、为什么使用装饰器模式 灵活性装饰器模式允许在运行时动态地为对象添加新的行为而无需修改其代码提供了一种灵活的方式来扩展对象的功能。避免子类爆炸通过使用装饰器模式可以避免创建大量子类来扩展对象的功能从而避免了子类爆炸的问题。组合功能可以通过组合多个装饰器来实现复杂的功能组合无需使用大量的继承关系。 3、如何使用装饰器模式 设计实现咖啡订单系统包含基本咖啡和不同的配料作为装饰器 // 抽象组件 - 咖啡 interface Coffee {String getDescription();double cost(); }// 具体组件 - 基本咖啡 class BasicCoffee implements Coffee {Overridepublic String getDescription() {return Basic Coffee;}Overridepublic double cost() {return 3.0;} }// 抽象装饰器 abstract class CoffeeDecorator implements Coffee {protected Coffee decoratedCoffee;public CoffeeDecorator(Coffee decoratedCoffee) {this.decoratedCoffee decoratedCoffee;}Overridepublic String getDescription() {return decoratedCoffee.getDescription();}Overridepublic double cost() {return decoratedCoffee.cost();} }// 具体装饰器 - 牛奶 class MilkDecorator extends CoffeeDecorator {public MilkDecorator(Coffee decoratedCoffee) {super(decoratedCoffee);}Overridepublic String getDescription() {return super.getDescription() , Milk;}Overridepublic double cost() {return super.cost() 1.0;} }// 具体装饰器 - 糖 class SugarDecorator extends CoffeeDecorator {public SugarDecorator(Coffee decoratedCoffee) {super(decoratedCoffee);}Overridepublic String getDescription() {return super.getDescription() , Sugar;}Overridepublic double cost() {return super.cost() 0.5;} }// 客户端代码 public class Client {public static void main(String[] args) {// 创建基本咖啡Coffee basicCoffee new BasicCoffee();System.out.println(Description: basicCoffee.getDescription());System.out.println(Cost: $ basicCoffee.cost());// 添加牛奶装饰器Coffee milkCoffee new MilkDecorator(basicCoffee);System.out.println(Description: milkCoffee.getDescription());System.out.println(Cost: $ milkCoffee.cost());// 添加糖装饰器Coffee sugarMilkCoffee new SugarDecorator(milkCoffee);System.out.println(Description: sugarMilkCoffee.getDescription());System.out.println(Cost: $ sugarMilkCoffee.cost());} } 4、是否存在缺陷和不足 可能导致类爆炸有大量具体组件和装饰器时可能导致类的数量急剧增加增加了系统的复杂性。破坏封装性装饰器模式将具体组件暴露给装饰器类可能破坏了封装性。 5、如何缓解缺陷和不足 使用抽象工厂结合抽象工厂模式通过工厂来创建组件和装饰器降低类的数量。使用组合模式将具体组件和装饰器组织成树形结构使用组合模式来管理它们的关系。慎用过多装饰器在设计时慎用过多的装饰器确保仅在需要时使用以避免类爆炸问题。 适配器模式 Adapter 1、什么是适配器模式 适配器模式允许原本由于接口不匹配而无法在一起工作的类能够协同工作。它通过引入一个包装类即适配器来转换原有类的接口为客户端期望的接口。 2、为什么使用适配器模式 解耦性适配器模式允许客户端与目标类的实现细节解耦使得客户端不需要知道目标类的内部实现。复用性适配器模式可以使得已有的类在新的系统中复用而无需修改其代码。灵活性适配器模式允许在不改变现有代码的情况下引入新的类提高系统的灵活性。 3、如何使用适配器模式 // 目标接口 interface Target {void request(); }// 不兼容的类 class Adaptee {public void specificRequest() {System.out.println(Adaptees specificRequest);} }// 适配器类 class Adapter implements Target {private Adaptee adaptee;public Adapter(Adaptee adaptee) {this.adaptee adaptee;}Overridepublic void request() {adaptee.specificRequest();} }// 客户端代码 public class Client {public static void main(String[] args) {Adaptee adaptee new Adaptee();Target target new Adapter(adaptee);target.request();} } 4、是否存在缺陷和不足 可能导致过多的适配类如果系统中有多个不同的类需要适配可能会导致大量的适配器类使系统变得复杂。不支持多继承的语言的限制在一些不支持多继承的语言中适配器模式可能会受到限制。 5、如何缓解缺陷和不足 使用对象适配器而非类适配器对象适配器通过组合的方式引入被适配对象避免了类适配器的多继承问题。考虑使用接口适配器如果目标接口中定义的方法较多可以考虑使用接口适配器模式只需实现感兴趣的方法。
http://www.hkea.cn/news/14353324/

相关文章:

  • 购物网站源代码宣传软文是什么意思
  • 济宁网站建设公司最新报价厦门seo哪家强
  • 龙华网站建设yihekj租房网站建设
  • 网站开发用什么编程语言电商产品开发流程
  • 电子商务网站建设大作业济阳县做网站公司
  • 宝塔建站网址做同城网站需要哪些
  • 网站制作书籍推荐自适应网页设计尺寸
  • c 做网站教程百度官方网址
  • 网站加速器免费广州微网站建设价位
  • 嘉兴 做企业网站国外建设网站情况
  • 建设公司网站的会计分录金昌市住房和城乡建设局网站
  • 网站建设转正申请报告网页制作工具的类别及功能
  • 强军网网站建设如何做正版小说网站
  • 专门做三国战纪的网站叫什么意思科技开发公司
  • 网站建设多久可以学会wordpress 开启 gzip
  • 网站快速排名优化方法广州番禺区酒店
  • 巴中做网站免费flash网站模板
  • 一些网站只能在微信打开怎么做的网站怎么添加广告
  • 网站建设合同注意点郑州威盟网站建设公司怎么样
  • 河北住房和建设厅官方网站建设工程施工合同条例
  • 辽源网站seo城乡建设杂志官方网站
  • 东莞做网站seo优化龙岩网站建设设计服务
  • 怎么做qq网站电子商务网站建设感想
  • 静态网站开发课程相关新闻南宁伯才网络
  • 怎么给网站做spm特产网站建设
  • 免费制作照片的网站菏泽做网站设计
  • seo网站推广企业wordpress 4.3
  • 江门网站建设方案外包互联网营销是做什么的
  • 比wordpress更好的网站程序青海省教育厅门户网站学籍查询
  • 做公司网站需要营业执照吗郴州新网招聘信息