读书笔记《Head First设计模式》

来源:互联网 发布:ubuntu双显卡 编辑:程序博客网 时间:2024/05/16 09:22

第一章:欢迎来到设计模式世界

P9:设计原则:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起
P11:设计原则:针对接口编程,而不是针对实现编程
P23:设计原则:多用组合,少用继承

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

P32:良好的OO设计必须具备可复用,可扩充,可维护三个特性
P32:模式不是代码,而是针对设计问题的通用解决方案

第二章:观察者模式:让你的对象知悉现况

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

P53:当两个对象之间松耦合,他们依然可以相互交互,但是不太清楚彼此的细节
P53:设计原则:为了交互对象之间的松耦合设计而努力。
P73:使用观察者模式时,你可以从被观察者处推或者拉数据,然而,推的方式被认为更“正确”

第三章:装饰者模式:装饰对象

P85:继承并不总是能够实现最优弹性和最好维护的设计
P86:设计原则:类应该对扩展开放,对修改关闭

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

P93:装饰者与被装饰者必须有同样的超类,利用继承达到类型匹配。

第四章:工厂模式:烘烤OO的精华

P115:使用静态工厂不需要使用创建对象的方法来实例化对象,但是不能通过继承来改变创建方法的行为

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

P139:设计原则:要依赖抽象,不要依赖具体类。
P143:下面几个方针避免你在OO设计中违反依赖倒置原则:1:变量不可以持有具体类的引用2:不要让类派生自具体类。3:不要覆盖基类中已经实现的方法

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

P159:工厂方法使用类的继承,而抽象工厂通过对象的组合。
简单工厂,工厂模式,抽象工厂模式的区别

第五章:单件模式:独一无二的对象

P170:利用单件模式,可以在需要时才创建对象
P174:单件模式常用来管理共享的资源

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

P177:单件可以延迟实例化
P180:多线程会对单件模式造成扰乱。使用同步的方法会降低效率,因为只有第一次才需要同步。
P181:同步一个方法可能造成程序执行效率下降100倍
P182:利用双重检查加锁:首先检查是否实例已经创建,如果未创建,才进行同步。
P182:volatile关键词确保:当变量被初始化成实例时,多个线程正确地处理变量。确保本条指令不会因编译器的优化而省略,且要求每次直接读值。优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。当要求使用volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。而且读取的数据立刻被保存。
P186:实现单件模式需要是有的构造器,一个静态方法和一个静态变量

第六章:命令模式:封装调用

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

P208:命令中封装了请求的接收者。

第七章:适配器模式和外观模式:随遇而安

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

P260:外观模式并没有封装子系统,而是提供简化的接口。
P260:外观的意图是简化接口,适配器的意图是将接口转换成不同接口。

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

P265:设计原则:最少知识原则:只和你的密友谈话。

P266:如何遵守最少知识原则:我们只应该调用属于以下范围的方法:1:该对象本身。2:被当做方法的参数而传递进来的对象。3:此方法所创建或实例化的任何对象。4:对象的任何组件。
P270:外观模式将客户从一个复杂的子系统中解耦。实现一个外观,需要将子系统组合进外观中,然后将工作委托给子系统。
P270:适配器将一个对象包装起来以改变其接口;装饰者将一个对象包装起来以增加新的行为和责任;而外观件一群对象“包装”起来以简化接口。

第八章:模板方法模式:封装算法

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

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

P296:好莱坞原则防止依赖腐败。
P311:策略模式和模板模式都封装算法:一个用组合,一个用继承

第九章:迭代器与组合模式:管理良好的集合

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

P339:设计原则:一个类应该只有一个引起变化的原因

P356:组合模式:允许你将对象组合成树形结构来表现整体/部分层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。

第十章:状态模式:事物的状态

P385:策略模式和状态模式是双胞胎,在出生时才分开。

P410:状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。

P423:和状态机不同,状态模式用类代表状态。
P423:状态模式和策略模式有相同的类图,但是它们的意图不同。

第十一章:代理模式:控制对象访问

P460:代理模式为另一个对象提供一个替身或占位符以控制对这个对象的访问。

P471:装饰者为对象增加行为,而代理是控制对象访问。

第十二章:复合模式:模式的模式

P500:MVC(Model-View-Controller)

P560:复合模式:结合两个或以上的模式,组成一个解决方案,解决一再发生的一般性问题。

第十三章:与设计模式相处:真实世界中的设计模式

P579:模式是某情境下,针对某问题的某种解决方案。
0 0
原创粉丝点击