《Head.First-Design.Patterns》总结



设计原则


封装变化:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起

针对接口编程,而不是针对实现编程
(针对超类型编程,变量的声明类型应该是超类型,通常是一个抽象类或者是一个接口)


多用组合,少用继承


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


类应该对扩展开放,对修改关闭


依赖倒置:要依赖抽象,不要依赖具体类(当你直接实例化一个对象时,就是在依赖它的具体类)
不要让高层组件依赖低层组件,而且,不管高层或低层组件,两者都应该依赖于抽象


最少知识原则:只和你的密友谈话(任何对象只应该调用属于以下范围的方法:该对象本身,
被当做方法的参数而传递进来的对象,此方法所创建或实例化的任何对象,对象的任何组件)


好莱坞原则:别调用(打电话给)我们,我们会调用(打电话给)你


单一责任(内聚):一个类应该只有一个引起变化的原因


设计模式


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

观察者模式:定义了对象之间的一对多依赖,这样一来,当一个对象改变其状态时,
它的所有依赖者都会收到通知并自动更新


装饰者模式:动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有
弹性的替代方案


工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个;
工厂方法让类把实例化推迟到子类


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


单件模式:确保一个类只有一个实例,并提供一个全局访问点


命令模式:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象;
命令模式也支持可撤销的操作


适配器模式:将一个类的接口,转换成客户期望的另一个接口
适配器让原本接口不兼容的类可以合作无间


外观模式:提供了一个统一的接口,用来访问子系统中的一群接口
外观定义了一个高层接口,让子系统更容易使用


模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中
模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤


迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示


大师
建立可维护的OO系统,要诀就在于随时想到系统以后可能需要的变化以及应付变化的原则


代码应该如同晚霞中的莲花一样地关闭(免于改变),如同晨曦中的莲花一样地开放(能够扩展)


实现一个接口 泛指 实现某个超类型(可以是类或接口)的某个方法


装饰者可以在所委托被装饰者的行为之前或之后,加上自己的行为,以达到特定目的


工厂方法使用继承:把对象的创建委托给子类,子类实现工厂方法来创建对象


工厂方法把客户代码从需要实例化的具体类中解耦


抽象工厂使用对象组合:对象的创建被实现在工厂接口所暴露出来的方法中


抽象工厂创建相关的对象家族,而不需要依赖它们的具体类


抽象工厂的方法经常以工厂方法的方式实现


如果程序有多个类加载器又同时使用了单件模式,需要自行指定同一个类加载器


命令模式的更多用途:队列请求、日志请求


对象适配器和类适配器使用两种不同的适配方法,分别是组合和继承


类适配器不是使用组合来适配被适配者,而是继承被适配者和目标类(Java不支持多继承)


装饰者:不改变接口,但加入责任


适配器:将一个接口转成另一个接口


外观:让接口更简单


外观和最少知识原则


好莱坞原则和模板方法


好莱坞原则和依赖倒置原则


P353/697
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值