装饰器模式应用--动态规则引擎 深碍√TFBOYSˉ_ 2022-05-27 09:55 159阅读 0赞 装饰器模式应用于动态功能添加,将功能实现分布于不同的组件,代码扩展能力强。 先从网上寻找示例,为英雄联盟里面的英雄添加技能,类图如下: ![2018041618305247][] 左侧Hero与BindMonk就是简单的接口与实现类关系,右侧Skills代码: public class Skills implements Hero{ private Hero hero; public Skills(Hero hero){ this.hero=hero; } public void learnSkills() { if(hero!=null) hero.learnSkills(); } } Skills与Hero构成实现与聚合关系,具体技能实现类代码: public class Skill_A extends Skills{ public Skill_A(Hero hero) { super(hero); } @Override public void learnSkills(){ super.learnSkills(); System.out.println("learn the skill_a"); } } 具体技能实现类是在实现父类英雄技能的基础上动态添加了skill\_a技能,这样达到了英雄与技能的解耦。测试类: public class DecoratorTest { public static void main(String[] args){ Hero hero=new BindMonk("whp"); Skills a= new Skill_A(hero); Skills b=new Skill_B(a); b.learnSkills(); } } 打印结果: whp学习如下技能 learn the skill_a learn the skill_b 项目开发中遇到这样一个业务场景,通过收集用户的日志来匹配设计好的规则,日常规则固定有7种类型,可以动态修改规则内容: ![20180416184612661][] 日志匹配规则要进行大量的if-else操作,导致代码膨胀混乱,可以采用构造器模式,将模式匹配模块化,这样,提高代码的可维护性以及动态扩展性。 ![20180416190545160][] 当然java存在很多开源规则引擎框架,该代码纯碎在小编觉得对方代码难以维护的情况下做的一步优化,望大神勿喷! 用例代码见个人git账户: [https://github.com/whpHarper/java][https_github.com_whpHarper_java] [2018041618305247]: /images/20220527/41a5f11d44564cb284082dc8559b4535.png [20180416184612661]: /images/20220527/6fa3c47603e04601b1b2fd2130cef00c.png [20180416190545160]: /images/20220527/2ac1427c23724293b73ded4827d5cd0b.png [https_github.com_whpHarper_java]: https://github.com/whpHarper/java
相关 装饰器模式 装饰器模式 <?php class BaseArticle{ protected $art = null; protected 我会带着你远行/ 2022年07月21日 01:28/ 0 赞/ 198 阅读
相关 装饰器模式 1 <?php 2 //装饰器模式-在不改变原有类的结构上,对类的功能那个作补充 3 4 //武器基类 5 abstract 秒速五厘米/ 2022年06月16日 00:00/ 0 赞/ 186 阅读
相关 装饰器模式应用--动态规则引擎 装饰器模式应用于动态功能添加,将功能实现分布于不同的组件,代码扩展能力强。 先从网上寻找示例,为英雄联盟里面的英雄添加技能,类图如下: 深碍√TFBOYSˉ_/ 2022年05月27日 09:55/ 0 赞/ 160 阅读
相关 装饰器模式 在学装饰器模式的时候,我想到了责任链模式中的级别这个概念,为什么这么说,在一个OA系统中我们会有不同级别(或者说权限范围不同)的管理员,首先我们要明确不同级别的管理员它也是管理 深碍√TFBOYSˉ_/ 2022年05月08日 06:14/ 0 赞/ 208 阅读
相关 装饰器模式 1、初识装饰器模式 装饰器模式,顾名思义,就是对已经存在的某些类进行装饰,以此来扩展一些功能。其结构图如下: ![watermark_type_ZmFuZ3poZW 小鱼儿/ 2022年04月24日 08:50/ 0 赞/ 233 阅读
相关 装饰器模式 ![Fpm6gbuGrUYHxqlnbEc-syPtY1Y3][] 什么是装饰器? 装饰器设计模式 > 装饰器模式(Decorator Pattern)允许向一个现有 ╰半橙微兮°/ 2022年04月21日 22:36/ 0 赞/ 216 阅读
相关 装饰器模式 一、基类 ![ContractedBlock.gif][] ![ExpandedBlockStart.gif][] /----------------------- £神魔★判官ぃ/ 2021年09月30日 08:42/ 0 赞/ 352 阅读
相关 装饰器模式 7.装饰器模式 ![70][] ![70 1][] class Program { static void Main( 拼搏现实的明天。/ 2021年09月16日 23:56/ 0 赞/ 321 阅读
相关 装饰器模式 ![5057999-ef364c6262961125.png][] image.png 意图: 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模 超、凢脫俗/ 2021年09月12日 02:16/ 0 赞/ 358 阅读
相关 装饰器模式 饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 这种... 小灰灰/ 2020年06月13日 05:56/ 0 赞/ 762 阅读
还没有评论,来说两句吧...