您的位置:首页 > 其它

设计模式(head first)总结

2015-06-25 16:24 197 查看
设计模式复习总结

OO设计原则:
1、针对接口编程,不是针对实现编程;

2、把不变化的封装起来;

3、多用组合,少用继承;

4、类对扩展开放,对修改关闭;

5、为对象之间的松耦合设计而努力;

6、依赖抽象,不要依赖具体的类;

7、最少知识原则:只和你的朋友谈;

8、别找我,我会找你(超类主控一切);

9、类应该只有一个改变的理由;

要点:可复用性、可维护性、可扩充性;设计模式是解决设计问题的通用方法,换言之就是解决问题的途径。

策略模式:定义了算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。

观察者模式:在对象之间定义一对多的依赖,这样一来,当一个对象状态改变时,一来它的对象都回收到通知,并产生相应的操作。(ps:Java内置的Listen就是此模式)

装饰者模式:动态的将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。(ps:Java的IO流就是此模式)

工厂方法模式:定义了一个创建相关或依赖对象的家族,而不需要明确的制定具体类。(ps:工厂方法使用继承,允许将实例化延迟到子类)

抽象工厂模式:提供一个接口,用于创建相关或依赖对象的“家族”,而不需要明确的制定具体类。(ps:抽象工厂模式使用对象的组合,创建相关的对象家族不需要依赖它们的具体类)

单件模式:确保一个类只有一个实例,并提供全局的访问点。(Java中使用私有的静态构造方法,使用多线程时注意线程同步问题)

命令模式:将请求封装成对象,这可以让你使用不同的请求、队列,伙这日志请求来参数化其他对象。命令模式也可以支持撤销操作。(命令模式将发出请求的对象和执行请求的对象解耦,也可以用于实现日志和事务系统)

适配器模式:将一个类的接口,装换成客户希望另一个接口。适配器让原本不兼容的类可以合作无间。(必须有接口,有类适配器和对象适配器,其中类适配器要用到多重继承)

外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。(注意和装饰者模式的区别:外观模式是包装一群接口来简化接口,装饰者模式是包装对象来增加行为)

模版方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。(钩子是方法,策略模式用组合,模版方法用继承)

迭代器模式:提供一种方法顺序的访问一个聚合对象中的各个元素,而又不暴露其内部表示。(依赖聚合提供便利,迭代器是一个接口)

组合模式:允许你将对象组成树形结构来表示“整体/部分”的层次结构。组合能让客户以一致的方式处理个别对象和对象组合。(让一个类只分配一个责任)

状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像是修改了类。(只允许一个对象拥有可变的状态,策略模式是用行为或算法来配置类,状态模式是允许类跟着状态的改变而改变行为)

代理模式:为一个对象提供一个替身或者占位符以访问这个对象。(代理有控制和管理访问的功能,并且分为多种代理,比如动态代理、远程代理等)

桥接模式:不只改变你的实现,也改变你的抽象。(实现和抽象放在两个不同的类层次中而使它们可以独立访问)

生成器模式:封装一个产品的构造过程,并允许按步骤构造;

责任链模式:一个以上的对象要处理同一个请求的时候。

蝇量模式:让一个实例能用来提供许多“虚拟实例”。

解释器模式:为语言创建解释器。(语法规则)

中介者模式:集中相关对象之间复杂的沟通和控制方式。(简化系统维护)

备忘录模式:让对象返回之前的状态。(备忘录放在外面,维护内聚,Java考虑使用序列化机制存储系统状态)

原型模式:创建给定类的实例过程很昂贵或很复杂,使用此模式。(允许使用克隆即复制来创建实例,想客户隐藏创建实例的复杂性)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: