设计模式

来源:互联网 发布:ssm商城源码 编辑:程序博客网 时间:2024/06/02 07:09

1.设计模式原则

参考:http://www.cnblogs.com/dolphin0520/p/3919839.html

1.开闭原则:对扩展开发,对修改关系,即在不修改原有代码的基础上进行扩展。

2.里氏替换原则:所有引用父类(基类)的地方可以透明的引用其子类,反之则不成立。里氏替换原则是实现开闭原则的重要方式之一。

3.依赖倒置原则:程序要依赖于抽象接口编程,而不是具体实现编程。依赖倒转原则要求我们在程序代码中传递参数时,尽量引用层次高的抽象层类,即使用接口和抽象类进行变量类型声明、参数类型声明、方法返回类型声明,以及数据类型的转换等,而不要用具体类来做这些事情。为了确保该原则的应用,一个具体类应当只实现接口或抽象类中声明过的方法,而不要给出多余的方法,否则将无法调用到在子类中增加的新方法。

开闭原则、里氏替换原则和依赖倒置原则一般会配合使用,开闭原则是目标,里氏替换原则是基础,依赖倒置原则是手段。

4.单一职责原则:一个类只需要负责一个功能领域的职责就行,若一个类负责了多个功能,则这些职责的耦合度就会提高,若一个职责发生变化,则会影响其他职责,因此需要将不同职责封装在不同的类中。

5.最少知道原则:一个软件实体应当尽可能少的与其他实体相互作用。

6.接口隔离原则:当一个接口太大时,我们要将接口分割成多个更细的接口,每一个接口都应该有一个相对独立的功能,客户端只需要知道与之相关的接口即可。

7.合成/聚合复用原则:合成/聚合复用原则就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。它的设计原则是:要尽量使用合成/聚合,尽量不要使用继承。

2.常用设计模式及应用场景举例

参考:http://www.cnblogs.com/geek6/p/3951677.html
1.单例模式:只允许有一个实例
应用:1.在Spring中创建的Bean都是单例模式;2.Servlet是单例模式;3.一些共享的资源也都可以设计为单例模式。
2.工厂方法模式:子类决定实例化类的类型
应用:java.util.Collection的iterator方法返回的是哪种迭代器是由Collection接口的实现类决定的。
3.抽象工厂模式
应用:
4.适配器模式:将一个类的接口,转换成客户期望的另一个接口。
应用:java I/O
//file 为已定义好的文件流 FileInputStream fileInput = new FileInputStream(file); InputStreamReader inputStreamReader = new InputStreamReader(fileInput);
FileInputStream是字节流,并没有字符流读取字符的一些api,因此通过InputStreamReader将其转为Reader子类,因此有了可以操作文本的文件方法。
5.装饰器模式:装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例
应用:Java I/O

BufferedReader bufferedReader=new BufferedReader(inputStreamReader);

构造了缓冲字符流,将FileInputStream字节流包装为BufferedReader过程就是装饰的过程,刚开始的字节流FileInputStream只有read一个字节的方法,包装为inputStreamReader后,就有了读取一个字符的功能,在包装为BufferedReader后,就拥有了read一行字符的功能。


6.代理模式:就是多一个代理类出来,代替原对象进行操作。
应用:Spring AOP

7.桥接模式:进行抽象和实现的分离
应用:JDBC
8.迭代器模式:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节
原创粉丝点击