策略模式
2015-09-28 10:59
197 查看
看了这个策略模式,学习到了3个设计原则:
@封装变化。即首先要区分出一个对象不变与 变化的地方,把变化的部分提取出来,另起封装
@面向接口编码,而不是面向实现编码。
面向实现编码的话 代码复用性不好,即不要在每个具体子类中实现继承或者实现接口的方法里 去 写实现编码,这样的话假如这个实现编码有几个子类都一样,那每个子类都可能要写相同的实现
@多用组合,少用继承。 继承有着它的总多弊端,诸如上边说的代码复用性,以及 代码不够灵活,不能够在运行时动态灵活改变。而用组合的话就可以增加运行时的动态灵活性,比如可以通过属性的set方法,在运行时(不是说jvm开始java class类的运行时),而是在编码过后,通过set方法,在需要的业务中实时去控制代码的运行逻辑。
@封装变化。即首先要区分出一个对象不变与 变化的地方,把变化的部分提取出来,另起封装
@面向接口编码,而不是面向实现编码。
面向实现编码的话 代码复用性不好,即不要在每个具体子类中实现继承或者实现接口的方法里 去 写实现编码,这样的话假如这个实现编码有几个子类都一样,那每个子类都可能要写相同的实现
@多用组合,少用继承。 继承有着它的总多弊端,诸如上边说的代码复用性,以及 代码不够灵活,不能够在运行时动态灵活改变。而用组合的话就可以增加运行时的动态灵活性,比如可以通过属性的set方法,在运行时(不是说jvm开始java class类的运行时),而是在编码过后,通过set方法,在需要的业务中实时去控制代码的运行逻辑。
相关文章推荐
- MVC Html.AntiForgeryToken() 防止CSRF攻击
- js添加行,删除行
- crtmpserver 启动初始化(写的比较详细)
- jquery multiselect 赋初始值
- CentOS 6 下安装Matlab教程
- 栈的压入 弹出序列
- 2717:Catch That Cow
- Spring Batch Tasklet example(二)
- 字符串,switch
- 架构师和数学
- 前端开发过程中的一些小知识点总结
- 检测到有潜在危险的 Request.Form 值
- Cookie对象HttpOnly和secure属性
- 二叉树的镜像
- CISCO_CVoice – 005:Translation Rule 和命中法则
- 简单易懂的jquery版三级联动select
- 解决eclipse快捷方式无法启动
- Windows系统U盘写保护
- [codevs2442] kshort 经典题
- 设置国内的centos 7 yum源