- 1、本文档共125页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3.2.8策略模式 strategy模式参与者 Strategy:定义所有支持算法的公共接口。Context使用该接口来调用ConcreteStrategy定义的算法。 ConcreteStrategy:用Strategy接口实现具体算法。 Context:用一个ConcreteStrategy对象来配置。维护一个Strategy对象的引用。可定义一个接口使Stategy访问它的数据。 * 3.2.8策略模式 实例:电子商务网站购物车系统,不同商品不同促销方法 Strategy public abstract class Strategy { public abstract void method(); } ConcreteStrategy public class strategyImplA extends Strategy { public void method() { System.out.println(“A折扣10%); }} public class StrategyImplB extends Strategy { public void method() { System.out.println(“B折扣18%); }} public class StrategyImplC extends Strategy { public void method() { System.out.println(“C折扣60%); }} * 3.2.8策略模式, 实例: Context public class Context { Strategy stra; public Context(Strategy stra) { this.stra = stra; } public void doMethod() { stra.method(); } } Test(client) public class Test { public static void main(String[] args) { Context ctx = new Context(new StrategyImplA()); ctx.doMethod(); ctx = new Context(new StrategyImplB()); ctx.doMethod(); ctx = new Context(new StrategyImplC()); ctx.doMethod(); }} * 3.2.9装饰模式 decorator模式动态地给一个对象添加一些额外的职责。 适用性 在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。 职责是可以撤消的。 当不能采用子类方法进行扩充时。 * 3.2.9装饰模式 decorator模式结构 * 3.2.9装饰模式 decorator模式行为 Decorator 将请求转发给其 Component对象。 在转发请求之前、之后,Decorator 可以选择性地执行一些附加的操作。 * 3.2.9装饰模式 decorator模式参与者 Component:定义对象接口,这些对象可以动态地添加职责。 ConcreteComponent:定义对象,这些对象可以附加一些职责。 Decorator:维持一个指向Component对象的引用,并定义一个与Component接口一致的接口。 ConcreteDecorator:向Component添加职责。 * 3.2.9装饰模式 实例:图形界面工具箱(GUI toolkit) 如一个TextView对象(在窗口中显式文本,默认没有滚动条、边框)。当TextView需要时,可以用附加上滚动条ScrollDecorator。同样方法,可以附加上边框BorderDecorator。 这样的结果可以对TextView使用decorators实现。 * 3.2.9装饰模式 实例:图形界面工具箱(GUI tool
您可能关注的文档
最近下载
- 12J201平屋面建筑构造图集.docx VIP
- 陶瓷绝缘连接器.pdf VIP
- 土木专业英国规范NA+A1_2012 to BS EN 1993-2_2006.pdf VIP
- 海南优腾爱科医疗科技有限公司医疗器械研发生产环评报告表.docx
- DB31_T 416-2008 城市道路路名牌(法规规范).pdf VIP
- 电力井施工规范.docx VIP
- 2023年最新的李白赞美杨贵妃的诗句.docx VIP
- ESC+2024+心房颤动(房颤)管理指南解读课件.pptx VIP
- 2025四川乐山市五通桥区发展产业投资有限公司公开招聘11人笔试备考题库及答案解析.docx VIP
- 人工智能基础(国科技大)中国大学MOOC慕课 章节测验 客观题答案.docx VIP
文档评论(0)