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

网站的建站方案长春网站开发培训价格

网站的建站方案,长春网站开发培训价格,网站建设 大学生创业网,长沙招聘网装饰者模式#xff08;Decorator Pattern#xff09;是一种结构型设计模式#xff0c;它允许你动态地向一个现有的对象添加新的行为#xff0c;同时又不改变其结构。 一、定义与特点 定义#xff1a;装饰者模式动态地将责任附加到对象上。若要扩展功能#xff0c;装饰者…装饰者模式Decorator Pattern是一种结构型设计模式它允许你动态地向一个现有的对象添加新的行为同时又不改变其结构。 一、定义与特点 定义装饰者模式动态地将责任附加到对象上。若要扩展功能装饰者提供了比继承更加有弹性的替代方案。 特点 结构型模式装饰者模式关注于对象的组合以及如何通过组合来实现新的功能。动态扩展通过装饰者模式可以在不修改原有类代码的情况下动态地向对象添加新的行为。透明性装饰后的对象仍然可以被当作原有类型的对象来使用客户端代码不需要知道对象是否被装饰过。 二、关键角色与职责 Component抽象构件 定义一个接口或抽象类声明了在具体构件中实现的业务方法。它是具体构件和抽象装饰类的共同父类引入可以使客户端以一致的方式处理未被装饰的对象以及装饰之后的对象实现客户端的透明操作。 ConcreteComponent具体构件 实现了Component接口或抽象类的具体类定义了具体的构件对象。实现了在Component中声明的方法装饰器可以给它增加额外的职责方法。 Decorator抽象装饰类 继承自Component接口或抽象类用于给具体构件增加职责。维护一个指向Component对象的引用通过该引用可以调用装饰之前构件对象的方法。需要在子类中实现具体的装饰行为。 ConcreteDecorator具体装饰类 继承自Decorator抽象类负责向构件添加新的职责。每一个具体装饰类都定义了一些新的行为可以调用在Decorator中定义的方法并可以增加新的方法用以扩充对象的行为。 三、运行机制 创建具体构件对象首先创建一个具体构件对象这是需要被装饰的原始对象。创建装饰器对象接着创建一个或多个装饰器对象通过构造函数将具体构件对象传入装饰器对象。调用方法当调用装饰后对象的方法时装饰器对象会先调用其所持有的具体构件对象的方法然后再执行自己定义的额外行为。 四、适用场景 功能扩展需要为一个类扩展功能为其添加额外的职责。动态添加行为需要在运行时动态地向对象添加新的行为而不需要修改其类定义。避免子类爆炸通过装饰者模式可以避免通过继承来扩展功能所导致的子类数量过多的问题。 五、优缺点 优点 灵活性提供了比继承更加灵活的功能扩展方式。可扩展性可以通过组合不同的装饰器来创建具有不同行为的新对象。透明性装饰后的对象仍然可以被当作原有类型的对象来使用。 缺点 复杂性会产生很多的小对象增加了系统的复杂性。排错困难对于多次装饰的对象调试时寻找错误可能需要逐级排查较为烦琐。 六、代码示例 示例一Java中的IO流 以Java中的IO流为例InputStream和OutputStream是最基本的抽象构件而各种FilterInputStream和FilterOutputStream就是具体的装饰器它们可以实现各种不同的IO流处理功能如缓冲、压缩、加密等。 // 抽象构件 InputStream input new FileInputStream(example.txt);// 具体装饰器缓冲流 BufferedInputStream bufferedInput new BufferedInputStream(input);// 再次装饰数据输入流 DataInputStream dataInput new DataInputStream(bufferedInput);// 使用装饰后的对象读取数据 while (dataInput.available() ! 0) {System.out.print((char) dataInput.readByte()); } dataInput.close(); 在这个例子中FileInputStream是具体构件BufferedInputStream和DataInputStream是具体装饰器它们依次对输入流进行了缓冲和数据处理功能的装饰。 示例二咖啡制作  在咖啡制作系统中一杯咖啡可以有多种调料如糖、奶、奶油等。通过装饰器模式可以动态地为咖啡添加不同的调料而不需要创建大量的子类来表示不同调料组合的咖啡 interface Coffee {double cost();}class SimpleCoffee implements Coffee {Overridepublic double cost() {return 1.0;}}abstract class CoffeeDecorator implements Coffee {protected Coffee coffee;public CoffeeDecorator(Coffee coffee) {this.coffee coffee;}}class SugarDecorator extends CoffeeDecorator {public SugarDecorator(Coffee coffee) {super(coffee);}Overridepublic double cost() {return coffee.cost() 0.5;}} 综上所述装饰者模式是一种强大且灵活的设计模式它允许我们在不修改原有类代码的情况下动态地向对象添加新的行为。然而在使用时也需要注意其可能带来的系统复杂性和排错困难等问题。
http://www.dnsts.com.cn/news/196768.html

相关文章:

  • 珠海酒店网站建设公司饰品网站建设规划书
  • c++语言做网站专业搜索引擎seo技术公司
  • 网站没有服务器可以吗行情软件免费下载的网站
  • 企业营销网站制作福州最新消息
  • 网站建设方案设计ppt网站优化排名推广
  • 网站暂时关闭 seo网站建设可以自己弄吗知乎
  • 网站建设费的摊销网站建设与管理专业工资高吗
  • 浦东新区苏州网站建设做电影网站如何不侵权
  • 鄂州做网站公司优秀作文网站推荐
  • 教育机构网站模板精品课程网站建设申报
  • 做网站的联系方式大理网站设计
  • 企业网站备案策划骏域建网站
  • 湛江市seo网站设计哪里好seo工资
  • 二手车网站建设公司做网络宣传哪个网站比较好
  • 学校网站报价方案企业运营是做什么的
  • 网站建站建设首选上海黔文信息科技有限公司2node框架做网站
  • 工程科技 网站设计seowhy培训
  • 用织梦做的手机网站怎么才能和电脑同步软件开发培训学校porin
  • 奉贤做网站的用ps如何做网站首页
  • 二级域名对于英文网站推广有什么影响wordpress和phpwind
  • 做赚钱的网站有哪些网站版面做得好的
  • 海洋网站建设怎么样医学网站建设方案
  • 网站建设佳木斯3d建模在线制作网站
  • 南京网站建设开发闵行网站设计
  • 通信建设资质管理信息系统网站做网站seo赚钱吗
  • 洛阳网站建设通江县城乡建设局门户网站
  • 成全视频在线直播观看seo 网站结构
  • 邢台123式的网站怎么做网站页面footer的copy
  • 视频网站费用湛江网站设计服务
  • 做招聘网站门户网站制作全包