Watch 1 Star 0 Fork 0

中年英雄王叔叔 / headfirstJava

Join us
Explore and code with more than 2 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Without author's permission, this code is only for learning and cannot be used for other purposes.
headfirst书籍官方源码以及自己看书写的代码 spread retract

Clone or download
Loading...
README.md

headfirst项目介绍

博客同步讲解:https://www.unclewang.info/category/note/headfirst/

项目介绍

《Head First设计模式》读书笔记代码实现
官网地址: http://www.wickedlysmart.com/head-first-design-patterns/ 里面直接有源代码

OO设计原则(面向对象)

  1. 找出应用中可能需要变化指出,把他们独立出来,不要和那些不需要变化的代码混在一起
  2. 针对接口编程,而不是针对实现编程
  3. 多用组合,少用继承
  4. 为了交互对象之间的松耦合设计而努力(松耦合让对象之间的相互依赖降到了最低,应对变化的弹性)
  5. OO最重要的原则——开放关闭原则,类应该对扩展开放,对修改关闭(代码应该如同晚霞中的莲花一样关闭,而晨曦中再次开放)
  6. 依赖倒置原则——要依赖抽象,不要依赖具体类
  7. 最少知识原则,只和你的密友谈话 不要过多的类相互依赖,这样修改的时候会有碎片感,不要利用朋友的朋友
  8. 好莱坞原则,别调用我们,我们会调用你,演员就不要管导演在想什么
  9. 单一责任原则,类应该只有一个改变的理由

笔记总结

  1. 策略模式:
    链接: http://www.unclewang.info/note/headfirst/448/
    题例:鸭子
    原则: a:找出应用中可能需要变化之处,把它们独立起来,不要和那些不需要变化。 b:针对接口编程,而不是针对实现编程。 c:多用组合,少用继承。
    策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

  2. 观察者模式:
    链接: http://www.unclewang.info/note/headfirst/453/
    题例:气象检测应用
    原则:为了交互对象之间松耦合设计而努力。
    观察者模式 定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会受到通知并自动更新。

  3. 装饰者模式:
    链接:http://www.unclewang.info/note/headfirst/456/
    题例:星巴兹咖啡连锁店
    原则:类应该对扩展开放,对修改关闭。(开放-关闭原则)
    装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。

  4. 工厂模式:
    链接: http://www.unclewang.info/note/headfirst/467/
    题例:披萨店
    原则:要依赖抽象,不要依赖具体类。(依赖倒置原则)
    抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。

  5. 单件模式:
    链接:http://www.unclewang.info/note/headfirst/471/
    题例:无
    原则:无
    单件模式确保一个类只有一个实例,并提供一个全局访问点。

  6. 命令模式:
    链接: http://www.unclewang.info/note/headfirst/485/
    题例:电器自动化
    原则:无
    命令模式将“请求与接受者”一起封装成对象,对于中间的调用者只需要先找到命令,然后找到谁要执行命令再告诉他。

  7. 适配器和外观模式
    链接: http://www.unclewang.info/note/headfirst/508/
    题例:火鸡变鸭子、家庭影院
    原则:最少知识原则
    改变接口,可能是为了满足新期待,也可能是因为太麻烦,一站式服务

  8. 模板方法模式
    链接: http://www.unclewang.info/note/headfirst/513/
    题例:咖啡和茶、排序
    原则:好莱坞原则
    模板已经想好了结构是什么,模板已经规定好了1234,你只是根据具体情况实现某个1或者3就好

  9. 迭代器和组合模式
    链接: http://www.unclewang.info/note/headfirst/513/
    题例:餐馆不停的合并,女招待想直接看到全部菜单
    原则:单一责任原则
    组合模式通常内部的方法嵌入迭代器模式,两者共同想完成就是遍历不同的数据结构,如果不存在层次结构,直接每个内部实现迭代器,存在层次看成树形,使用组合模式

  10. 状态模式
    链接: https://www.unclewang.info/note/headfirst/530/
    题例:糖果售卖机有个流程
    原则:单一责任原则
    状态模式允许对象在内部状态改变时改变他的行为,而对象看起来好像修改了他的类。当遇到的问题可以归结到一个context上,而且还能有状态图,而且需要很多if判断的话,状态模式简直神器

  11. 代理模式
    链接: http://www.unclewang.info/note/headfirst/545/
    题例:糖果机远程监控、图片加载要时间、聊个天不能改别人的信息
    原则:
    代理分很多种,但是这一章信息量最大,用到了动态代理、rmi很多东西,顺着代理的思路还可以实现aop。

  12. 复合模式
    链接: http://www.unclewang.info/note/headfirst/607/
    题例:多种模式混在一起,MVC
    原则:
    很多优秀的威力强大的设计模式会同时使用多个设计模式,这就是模式的模式——复合模式。

  13. 与设计模式相处
    链接: http://www.unclewang.info/note/headfirst/630/
    组合模式通常内部的方法嵌入迭代器模式,两者共同想完成就是遍历不同的数据结构,如果不存在层次结构,直接每个内部实现迭代器,存在层次看成树形,使用组合模式

  14. 附录A 剩下的模式
    链接: http://www.unclewang.info/note/headfirst/644/
    包括剩下的9种模式,生成器、蝇量、访问者、备忘录等等

Comments ( 0 )

Sign in for post a comment

Java
1
https://gitee.com/whuwangxin/headfirst.git
git@gitee.com:whuwangxin/headfirst.git
whuwangxin
headfirst
headfirst
master

Help Search