HeadFirst设计模式(一)策略者模式】的更多相关文章

最近在看HeadFirst设计模式一书,作为一个半路出家的程序员,感觉很多东西需要学习,学习的路程中有些东西学了当时觉得理解了,但日常工作中没有使用到渐渐的自己就忘记了.----------------------上面就是写者系列的博客的原因,主要是为了巩固知识,忘记在那个博主那边看过这么一句话,知识学了后总结了才变成自己的. 策略者模式----定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户. 当然这只是理论的东西,说实话我现在都没理解这个理论是啥,下…
一.一个叫声接口和几只鸭子 从一个叫声接口开始. {<HeadFirst设计模式>Delphi代码之模式小结 } { 一个叫声接口                            } { 编译工具:Delphi2010 for win32          } { E-Mail :guzh-0417@163.com             } unit uQuackable; interface type IQuackable = interface(IInterface) proced…
一.引言 前面主题介绍的状态模式是对某个对象状态的抽象,而本文要介绍的策略模式也就是对策略进行抽象,策略的意思就是方法,所以也就是对方法的抽象,下面具体分享下我对策略模式的理解. 二.策略者模式介绍 2.1 策略模式的定义 在现实生活中,策略模式的例子也非常常见,例如,中国的所得税,分为企业所得税.外商投资企业或外商企业所得税和个人所得税,针对于这3种所得税,针对每种,所计算的方式不同,个人所得税有个人所得税的计算方式,而企业所得税有其对应计算方式.如果不采用策略模式来实现这样一个需求的话,可能…
场景出发 假设存在如下游戏场景: 1:角色可以装备木剑,铁剑,魔剑3种装备,分别对怪物造成20HP,50HP,100HP伤害(未佩戴装备则无法攻击); 2角色可以向怪物攻击,一次攻击后损失角色所佩戴装备的HP伤害,当HP损失完毕后,怪物死亡; 不假思索地我会写出如下的代码: class Monster { public string Name { get; set; } public int HP { get; set; } /// <summary> /// 怪物被攻击后提示 /// <…
什么是策略模式:它定义了一系列算法,可以根据不同的实现调用不同的算法 大多数的设计模式都是为了解决系统中变化部分的问题 一.OO基础 抽象.封装.多态.继承 二.OO原则 1.封装变化,如把FlyBehavious.QuackBehavior从Duck中抽离出来 2.组合优于继承 3.面向抽象(接口.抽象类)编程而不是面向实现 4.为对象的解耦设计而努力 5.类应该对扩展开放,对修改封闭 6.依赖抽象,不要依赖具体 7.Principle of Least Knowledge -talk onl…
概念策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变化.(原文:The Strategy Pattern defines a family of algorithms,encapsulates each one,and makesthem interchangeable. Strategy lets the algorithm vary independently from clients that use it.)Conte…
定义: 复合模式结合两个或以上的模式,组成一个解决方案,解决一再发生的一般性问题. 要点: MVC模式是复合模式,结合了观察者模式.策略模式和组合模式. 模型使用了观察者模式,以便观察者更新,同时保存了解耦. 控制器是视图的策略,视图可以使用不同的控制器实现,得到不同的行为. 视图使用组合模式实现用户界面,用户界面通常组合了嵌套组件,像面板.框架.按钮. 这些模式携手合作,把MVC模式三层解耦,这样可以保持设计干净又有弹性. 适配器模式用来将新的模式适配成已有的视图和控制器. Model2是MV…
定义: 允许对象在内部状态改变时改变它 行为,对象看起来好像修改了它的类. OO原则: 封装变化 多用组合,少用继承 针对接口编程,不针对实现编程 为交互对象之间的松耦合设计而努力 类应该对扩展开放,对修改关闭 依赖抽象,不要依赖具体类 只和朋友交谈 别找我,我会找你 类应该只有一个引起改变的理由 要点: 状态模式允许一个对象基于内部状态而拥有不同的行为. 和程序状态机不同,状态模式用类代表状态. Context会将行为委托给当前的状态对象. 通过将每个状态封装进一个类,我们以后需做的任何变化都…
模板方法 定义: 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使用得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤. 策略模式: 定义一个算法家族,并让这些算法可以互换.正因为每一个算法都被封装起来了,所以客户可以轻易地使用不同的算法. 好莱坞原则: 别调用我们,我们会调用你.(依赖抽象) 与依赖倒置原则: 避免使用具体类,而多使用抽象 用模版方法来做排序(用非继承的方式实现模板方法): 在Arrays中提供了sort的静态方法,sort要求传进的是一个数组.…
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/L_Andy/article/details/30489331 一. 举例说明 曾经做了一个程序,程序的功能是评价几种加密算法时间.程序的使用操作不怎么变,变的是选用各种算法. 结构例如以下: Algorithm:抽象类.提供算法的公共接口. RSA_Algorithm:详细的RSA算法. DES_Algorithm:详细的DES算法. BASE64_Algorithm:详细的Base64算法. 在…