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

河南建筑信息监管网官网seo含义

河南建筑信息监管网官网,seo含义,上海全屋整装哪家好,首页官网文章目录 示例AOP 很多时候我们不希望一个类变得非常庞大,生来就包含很多职责。装饰器模式可以动态地给某个对象添加职责,而不会影响从这个类中派生的其他对象 为什么不用继承解决这个问题呢?如果用继承有可能会创造出数量庞大的子类&#x…

文章目录

    • 示例
    • AOP

很多时候我们不希望一个类变得非常庞大,生来就包含很多职责。装饰器模式可以动态地给某个对象添加职责,而不会影响从这个类中派生的其他对象

为什么不用继承解决这个问题呢?如果用继承有可能会创造出数量庞大的子类,而如果把子类的属性变成装饰器,就可以灵活自由地组合了,就像天冷了要穿一件衣服等等

示例

从结构上看,Attack 方法进入了一个包装链,先执行火焰技能,再执行了闪电技能

// 定义游戏角色接口
interface ICharacter
{void Attack();
}// 实现游戏角色类
class Character : ICharacter
{public void Attack(){Console.WriteLine("角色进行普通攻击!");}
}// 装饰器基类
abstract class CharacterDecorator : ICharacter
{protected ICharacter character;public CharacterDecorator(ICharacter character){this.character = character;}public virtual void Attack(){character.Attack();}
}// 具体装饰器类:添加火焰技能
class FireDecorator : CharacterDecorator
{public FireDecorator(ICharacter character) : base(character){}public override void Attack(){base.Attack();Console.WriteLine("释放火焰技能!");}
}// 具体装饰器类:添加闪电技能
class LightningDecorator : CharacterDecorator
{public LightningDecorator(ICharacter character) : base(character){}public override void Attack(){base.Attack();Console.WriteLine("释放闪电技能!");}
}class Program
{static void Main(string[] args){// 创建基本角色ICharacter character = new Character();// 添加火焰技能character = new FireDecorator(character);// 添加闪电技能character = new LightningDecorator(character);// 角色进行攻击character.Attack();// 输出结果:// 角色进行普通攻击!// 释放火焰技能!// 释放闪电技能!}
}

AOP

在这里我们使用了 C# 的 PostSharp 包,创建了方法切面监听

当 Attack 执行时,会引发 OnEntry 和 OnExit 生命周期

在分离业务代码和数据统计代码中, AOP 十分有效!

using PostSharp.Aspects;
using System;// 日志记录切面
[Serializable]
public class LogAspect : OnMethodBoundaryAspect
{public override void OnEntry(MethodExecutionArgs args){Console.WriteLine($"[Log] Entering {args.Method.Name}");}public override void OnExit(MethodExecutionArgs args){Console.WriteLine($"[Log] Exiting {args.Method.Name}");}
}// 游戏角色类
public class Character
{[LogAspect] // 应用日志记录切面public void Attack(){Console.WriteLine("Character attacking!");}
}// 使用 AOP 的游戏示例
class Program
{static void Main(string[] args){Character character = new Character();character.Attack();// 输出结果:// [Log] Entering Attack// Character attacking!// [Log] Exiting Attack}
}
http://www.tj-hxxt.cn/news/13478.html

相关文章:

  • 武夷山建设局网站sem是什么基团
  • 自己动手建立个人网站汕头seo代理商
  • 怎么把网站黑掉宁波网络营销推广公司
  • 云南网站建设开发一个app需要多少钱
  • 怎么做点播网站网络培训心得体会
  • 企业网站建设的常见流程深圳关键词推广优化
  • 自助建站的优点与缺点电商线上推广
  • 自己做的网站打开太慢网页版百度
  • 提供服务的网站seo专员岗位要求
  • 自己怎么做百度网站百度提交网站收录查询
  • 东莞网站开发定制武汉网络营销推广
  • 商城网站要多少钱seo排名点击软件推荐
  • wordpress双语网站可以发外链的网站整理
  • 网站的作用有哪些网络营销师报名入口
  • 彩票网站建设需要什么湖南关键词优化排名推广
  • 网站开发软件下载全国互联网营销大赛官网
  • 做直播网站有市场吗企业seo排名费用报价
  • 电子商城网站开发支持手机端企业培训考试app
  • 做美容美发学校网站公司梅州seo
  • 青岛模板网站百度公司地址在哪里
  • 源代码网站和模板做的区别北京seo专员
  • vs2013怎么做网站seo整站优化解决方案
  • 垂直 社交网站 建设十大暗网搜索引擎
  • 徐州网站开发设计平台中牟网络推广
  • 建设网站好公司哪家好怎么做网站免费的
  • wordpress page内容重庆搜索引擎seo
  • 最方便建立网站深圳20网络推广
  • 永州公司做网站营销策划培训
  • 武汉影楼网站建设天津百度推广公司
  • 陕西省建设监理协会网站搜索数据