软件设计模式-策略模式
阅读数:81 评论数:0
跳转到新版页面分类
架构学
正文
策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
设计原则:多用组合,少用继承。封装变化。针对接口编程,不针对实现编程。
原则和模式可以在软件开发生命的任何阶段应用。
这里把鸭子的飞行的行为想像为“一族算法”。
封装变化:把会变化的部分取出并封装起来,便以后可以轻易地改动或扩充此部分,而不影响不需要变化的部分。
针对接口编程,关键就是在多态。利用多态,程序可以针对超类型编程,执行时会根据实际状况执行到真正的行为。例如:有一个抽象对象Animal,有一个具体的实现Dog,那么:
“针对实现编程”
Dog d = new Dog();
d.bark();
"针对接口编程"
Animal animal = new Dog();
animal.makeSound();
Spring框架中资源访问Resource接口,是具体资源访问策略的抽象,可以看做是一种策略模式的应用。
最常用的有四个:
(1)ClassPathResource:以类路径的方式进行访问。
(2)FileSystemResource:以文件系统绝对路径的方式进行访问。
(3)ServletContextResource:以相对于web应用根目录的方式进行访问。
(4)UrlResource:通过java.net.URL来访问资源,当然也支持File格式,如“file:”。
相关推荐
设计原则:要依赖抽象,不要依赖具体类。
这个原则听起来很像是“针对接口编程,不针对实现编程”,然而这里更强调“抽象”,不能让高层组件依赖底层组件,而且,不管高层或低层组件,“两者”应该依赖于抽象。
一
一、概述
单件模式:确保一个类只有一个实例,并提供一个全局访问点。对于频繁使用的对象,特别是重量级对象,可以省略创建对象所花费的时间,同时降低GC压力。
采用私有构造器。Spring容器中的Bean默
一、概述
命令模式:将动作的请求者从动作的执行者中解耦。
发起请求的对象是调用者,调用者只要调用命令对象的execute()方法就可以让接收者工作,而不必知道具体的接收者对象是谁、是如何工作的。
命
模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
算法内的步骤不要切割的太细,否则会较没有弹性。
钩子是