Java设计模式学习总结

Posted xinxinblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java设计模式学习总结相关的知识,希望对你有一定的参考价值。

设计思想:
面向接口编程;
应对变化(数量、类型、扩展),封装变化;


(一)设计原则
1. 封装变化

2. 多用组合,少用继承

3. 针对接口编程,不针对实现编程

4. 为交互对象之间的松耦合设计而努力

5. 开闭原则(对扩展开放,对修改关闭)

6. 依赖倒置原则:要依赖抽象,不要以来具体类
*变量不可以持有具体类的引用
*不要让类派生自具体类
*不要覆盖基类中已实现的方法

(二)设计模式
1. 策略模式(StrategyPattern)
解决算法族的动态切换及扩展性问题

2. 观察者模式(ObserverPattern)
use: Observable/Observer
解决一对多的通知以及被通知者的动态扩展问题

3. 装饰者模式(DecoratorPattern)
职责扩充
eg.InputStream->FilterInputStream
借用继承实现相同接口对象的引用及扩展,赋予新的职责
(动态的将责任附加到对象上,用于扩展功能)

4. 工厂方法模式(FactoryPattern)
use:FactoryClass/Abstract Factory(abstract createComponent)
封装实现,应对实例化类型及数量的变化。
通过Abstract类声明工厂方法,子类继承并分别实现工厂方法。
工厂方法将类的实例化推迟到了子类。

误区:简单工厂方法被误认为是工厂模式。简单工厂类提供一个create方法,
直接将生产过程放在该方法中实现。和工厂方法的abstract方法有所区分。


5. 抽象工厂模式
提供一个接口,用于创建相关或依赖对象的家族,而不需要指定具体类。

6. 单例模式(Singleton)
线程不安全:
普通方式
线程安全三种方式:
同步getInstance()方法(最差)
急切实例化(类初始化时直接将变量实例化)
双重检验加锁:延迟实例化的最佳方案

7. 命令模式
将请求封装成对象
完成操作与实现的解耦(打包运算块),还可以实现撤销。
Invoker: SetCommand(command); event=> command.execute();
Command: command.execute(); command.undo();

应用:
a. 产出命令后,放入commandQueue,专门的线程池负责从commandQueue中取command执行
b. 记录已执行但未彻底结束的操作,持久化到硬盘,实现异常恢复(未保存的word操作)

8. 适配器模式
解决接口不兼容问题,完成接口的转换。








































以上是关于Java设计模式学习总结的主要内容,如果未能解决你的问题,请参考以下文章

20145307JAVA学习期末总结

## 20155336 2016-2017-2《JAVA程序设计》第十周学习总结

20145321 《Java程序设计》第5周学习总结

20145118 《Java程序设计》第1周学习总结

20145231 《Java程序设计》第一周学习总结

9/29-10/5 java学习总结(没有课堂的课后学习总结) &实验总结4