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

网站建设运营知乎网站建设项目培训

网站建设运营知乎,网站建设项目培训,东莞市seo网络推广报价,中国本科高等质量建设研究网站简介 装饰者模式(Decorator Pattern)是一种结构型设计模式,它允许你在不改变对象接口的前提下,动态地将新行为附加到对象上。这种模式是通过创建一个包装(或装饰)对象,将要被装饰的对象包裹起来…

简介

装饰者模式(Decorator Pattern)是一种结构型设计模式,它允许你在不改变对象接口的前提下,动态地将新行为附加到对象上。这种模式是通过创建一个包装(或装饰)对象,将要被装饰的对象包裹起来,从而实现对原有对象功能的增强和扩展。

角色

  • Component(组件): 定义了一个抽象接口,可以是抽象类或接口,规定了被装饰对象和装饰器的共同接口。
  • ConcreteComponent(具体组件): 实现了组件接口的具体类,是被装饰的对象。
  • Decorator(装饰器): 也是组件接口的子类,它持有一个指向具体组件对象的引用,并可以附加新的行为。
  • ConcreteDecorator(具体装饰器): 实现了装饰器接口的具体类,负责为具体组件对象添加新的行为。

优点

  • 装饰器模式可以在不改变现有代码的情况下,动态地扩展一个对象的功能。
  • 可以使用多个装饰器来组合成一个对象,可以灵活地增强对象的功能。
  • 装饰器模式遵循开闭原则,可以通过新增装饰器来扩展功能,而无需修改已有代码。

缺点

  • 过度的使用装饰器模式会导致程序中出现大量的小类,可能会使程序结构变得复杂。
  • 如果过度地使用继承来实现装饰器模式,可能会导致设计失去灵活性和可复用性。

应用场景

  • 动态扩展功能: 当你需要在不修改现有对象的代码的情况下,动态地向对象添加新功能或行为时,装饰者模式是一种非常有用的设计模式。
  • 避免类爆炸: 当有多个可能的组合方式时,避免创建大量子类的类层次结构,而使用装饰者模式可以更灵活地组合不同的功能,避免类爆炸问题。
  • 组合优于继承: 装饰者模式提供了一种更灵活的方式来组合对象的行为,相对于静态的继承,它更加优雅且易于维护。
  • 在运行时动态添加行为: 当需要在运行时决定对象是否添加某些行为,以及如何添加这些行为时,装饰者模式可以派上用场。
  • 分层次的配置: 装饰者模式允许你将各种功能按照层次结构进行组织和配置,从而更容易管理复杂的对象。
  • 可插拔性: 当你希望能够随时插入或删除功能时,装饰者模式允许你以灵活的方式添加或删除装饰器,从而实现可插拔性。
  • 不影响现有代码: 装饰者模式不需要修改现有对象的代码,因此适用于已经存在的类,无需改变其结构即可扩展功能。

实现

案例:我们工作中经常用到流程引擎,我们这次就用装饰器模式写一个小案例模拟流程引擎中流程动作的处理,可以做到随意打乱流程动作的顺序,可以随意增加和减少流程动作。

  • Component(组件)
public abstract class AbstractFlowAction
{public ulong Id { get; set; }public string Name { get; set; }public abstract void Excute();
}
  • ConcreteComponent(具体组件)
public class FlowActionInfo : AbstractFlowAction
{public override void Excute(){Console.WriteLine($"ID:{this.Id},Name:{this.Name}");}
}
  • Decorator(装饰器)
/// <summary>
/// 装饰器
/// </summary>
public abstract class AbstractDecorator : AbstractFlowAction
{AbstractFlowAction _action = null;public AbstractDecorator(AbstractFlowAction action){_action = action;}public override void Excute(){this._action.Excute();}
}
  • ConcreteDecorator(具体装饰器)
/// <summary>
/// 内容检查
/// </summary>
public class ContentActionDecorator : AbstractDecorator
{public ContentActionDecorator(AbstractFlowAction action) : base(action){}public override void Excute(){base.Excute();Console.WriteLine("开始内容检查...");}
}/// <summary>/// 格式检查/// </summary>public class FileFormatActionDecorator : AbstractDecorator{public FileFormatActionDecorator(AbstractFlowAction action) : base(action){}public override void Excute(){base.Excute();Console.WriteLine("开始格式检查...");}}/// <summary>/// 杀毒动作/// </summary>public class VirusActionDecorator : AbstractDecorator{public VirusActionDecorator(AbstractFlowAction action) : base(action){}public override void Excute(){base.Excute();Console.WriteLine("开始杀毒...");}}


文章转载自:

http://VPeZetmY.dwdjj.cn
http://5saIkaph.dwdjj.cn
http://ZSgdWn9k.dwdjj.cn
http://IE7aZDc5.dwdjj.cn
http://pP21xfdS.dwdjj.cn
http://isfzY4rW.dwdjj.cn
http://7iNkcWhm.dwdjj.cn
http://QZJ7cnSv.dwdjj.cn
http://4JMniFWM.dwdjj.cn
http://2FI9I6CT.dwdjj.cn
http://wQoOGFPK.dwdjj.cn
http://idUh53S7.dwdjj.cn
http://3q65dtbw.dwdjj.cn
http://2mX0Bcm2.dwdjj.cn
http://F8ptmn6z.dwdjj.cn
http://9qOaCBya.dwdjj.cn
http://0VFLyJEO.dwdjj.cn
http://2eNB3qjE.dwdjj.cn
http://cAFkCmyz.dwdjj.cn
http://GG4GBDxK.dwdjj.cn
http://TABukWyP.dwdjj.cn
http://iTbkQHwZ.dwdjj.cn
http://cPMMT5xu.dwdjj.cn
http://ILBKD7PL.dwdjj.cn
http://ATar1pgm.dwdjj.cn
http://sG3aNMCf.dwdjj.cn
http://A8nUeg0c.dwdjj.cn
http://0Q6a2NOy.dwdjj.cn
http://dvksfbwL.dwdjj.cn
http://h21HMwnx.dwdjj.cn
http://www.dtcms.com/wzjs/705727.html

相关文章:

  • 软件工程师招聘信息网站备案网查询
  • 怎样做网站 app教程2345网址导航是谷歌吗
  • 合肥网站建设公网站一般都是用什么软件做的
  • 网站推广妙招企业信息查询表去哪里查
  • 模版网站利于优化快站心动小程序官网
  • 企业网站建设如何做好外链建设设计家装修效果图软件
  • 苏州网站建设排行wordpress 移动商城主题
  • wordpress建立php站点地图厦门建设银行招聘网站
  • 购物平台网站建设框架小程序编辑
  • 网站信息内容建设局通报包装印刷
  • 处方药可以做网站吗白云电子商务网站建设
  • 网站优化一般要怎么做电商怎么做的
  • 毕业设计做旅游网站建站外贸企业官网推广
  • 中山哪家做网站好有没有淄博张店做兼职工作的网站
  • 腾讯云网站搭建seo网站推广招聘
  • 丹阳网站建设如何中国建筑公司排名一览表
  • 网站手机验证码怎么做首商网官网
  • dede 企业网站模板品牌形象设计包括什么
  • 营销型网站的现状dedecms资源下载模板
  • 静态网站托管天津建设协会网站
  • 双流网站建设品牌设计主要做哪些内容
  • 企业网站建设移动天津软件开发培训机构
  • 萧山工程建设有限公司网站潍坊做网站哪家公司最好
  • vs做的网站怎么放到iis中中国建设银行合肥招聘信息网站
  • asp网站服务建设俄语网站制作
  • 大连网站制作公司费用多少猪八戒网站做推广怎么样
  • php网站后台模版嘉兴网站设计
  • 给个营销型网站国外企业邮箱推荐
  • 阿里云网站建设部署与发布试题答案苏州怎么做网站
  • 怎么阻止网站备案信息修改网站负责人