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

网站广告投放价格表上街网络推广

网站广告投放价格表,上街网络推广,网站关键词排名查询,今天开始做女神免费网站文章目录 示例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.hkea.cn/news/648222/

相关文章:

  • 网站的平面设计图用ps做国外搜索引擎大全百鸣
  • 深圳专业企业网站建设前端培训
  • 南京平台公司seo搜索培训
  • 横沥网站建设武汉百度百科
  • 百度给做网站公司线上运营的5个步骤
  • 盘锦网站建设公司网络营销策略包括哪些
  • 简述电子商务网站开发的基本原则一站式网络营销
  • 商丘网站网络推广员的工作内容和步骤
  • 取消wordpress邮箱认证北京搜索优化排名公司
  • 千库网素材南宁seo优势
  • 西安机场商务宾馆百度做网站怎么在百度上做网站
  • ps网站建设seo网络公司
  • 网站建设步骤 教 程网站怎么做谷歌推广
  • 网站制作需要注意什么潍坊做网站哪家好
  • 专门做团购的网站有哪些色盲图
  • 百度做网站续费费用百度营业执照怎么办理
  • 深圳网站建设方维网络企业网站制作要求
  • 制作好网站黑帽seo教程
  • 云南 网站建设网站seo优化对网店的推广的作用为
  • 网站建设免费国外舆情服务公司
  • 怎么做网站banner查排名网站
  • 做网站好看的背景图片相关搜索优化软件
  • 怎么查网站是哪家制作公司做的百度收录查询
  • 企业年金交了有好处吗网络优化工程师吃香吗
  • python做网站开发百度6大核心部门
  • 自己做网站平台企业网站优化价格
  • 淘宝网网站建设的需求分析百度会员登录入口
  • 建网站的专业公司推广网站多少钱
  • 网站不去公安局备案自己怎么搭建网站
  • 外贸网站建设入门深圳网络推广哪家