最近一直在看设计模式,GOF23种设计模式反复理解中,设计模式确实对面向对象编程有很大帮助!

1)了解UML类图中泛化、实现、依赖、关联、聚合、组合关系

2)每种设计模式的特点和概念是什么,它解决了一个什么样的问题、它的优缺点是什么!每个设计模式,至少能举出一个场景,可加深记忆。

3)了解面向对象编程的三特性、七原则和六视点

最终目标:说出一种设计模式就能知道是解决了一个什么样的问题,他的业务模型(类图)是怎样的,根据业务模型,可直接实现编码。

特点、概念、类图、场景举例、程序实现。这五个环节下来基本对设计模式可以有较深刻的理解。

设计模式按类型可分为三种:创建型、结构型和行为性。

创建型:

(1)单例:只需一个实例时考虑。

(2)工厂方法:一般先用工厂方法解决对象创建问题。

(3)抽象工厂:当工厂方法无法满足多系列问题时,再重构为抽象工厂。

(4)建造者:多个部件的建造实现相同,只是所需部件、建造顺序不同时考虑。

(5)原型:在初始化信息不发生变化时考虑。

结构型:

(1)适配器:让接口不相容的类能协同工作。(亡羊补牢)

(2)装饰:动态增加单个对象的额外职责,比生成子类更灵活。

(3)桥接:使继承关系更改为组合关系,使两者可独立变化。(未雨绸缪)

(4)组合:用树状结构表示“整体-部分”的层次关系,使单个对象(叶节点)与组合对象(枝节点)的使用具有一致性。

(5)享元:为运用共享技术,支持大量细粒度对象,节省开销。

(6)代理:控制对单个对象的访问。

(7)外观:子系统的高层接口,避免两个类直接关系的第三者。

行为型:

(1)观察者:一对多依赖关系,一端变化、多端得到通知并自动更新。(目标与观察者可实现弱耦合)

(2)模板方法:继承+重写解决代码重复问题。

(3)命令:将请求发送者与具体实现者解耦,可对请求排列、取消、重做,支持事务。(多请求,单处理)

(4)职责链:将处理者排成链,沿链传递请求。(单请求,多处理)

(5)状态:当对象内状态改变而执行不同操作时考虑,状态转移逻辑不在if/switch中,而在各子类之间,增/改状态和状态转换较容易。

(6)解释器:若某特定问题发生的频率足够高时考虑,需定义文法表示与解释器本身。

(7)中介者:由中介封装一系列对象交互,减少对象间耦合,利于复用。(朋友多)

(8)访问者:当Element较稳定、Visitor易增加时考虑。(朋友在精不在多)

(9)策略:将一系列算法逐个封装并可相互替换,易于切换、理解、扩展。

(10)备忘录:不破坏封装,又要取该对象内状态,且要求状态还原时考虑。(保持封装边界)

(11)迭代器:将对集合的访问与遍历从集合对象中分离出来到迭代器中。

转载于:https://www.cnblogs.com/ice-baili/p/4651429.html

设计模式学习笔记——目录相关推荐

  1. java/android 设计模式学习笔记目录

    其实很早就想开始总结设计模式了,无奈刚刚换完工作,工作太忙,平时周末也太懒,难得提起精神写一点,估计时间会花的很长,不过还是自己加油吧~~. 学习笔记,顾名思义,其实就是我在平时看书,工作的笔记而已, ...

  2. java/android 设计模式学习笔记(1)--- 单例模式

    前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使 ...

  3. java/android 设计模式学习笔记(6)---适配器模式

    这篇来介绍一下适配器模式(Adapter Pattern),适配器模式在开发中使用的频率也是很高的,像 ListView 和 RecyclerView 的 Adapter 等都是使用的适配器模式.在我 ...

  4. java/android 设计模式学习笔记(8)---桥接模式

    这篇博客我们来介绍一下桥接模式(Bridge Pattern),它也是结构型设计模式之一.桥接,顾名思义,就是用来连接两个部分,使得两个部分可以互相通讯或者使用,桥接模式的作用就是为被分离了的抽象部分 ...

  5. java/android 设计模式学习笔记(1)---单例模式

    前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使 ...

  6. java/android 设计模式学习笔记(3)---工厂方法模式

    这篇来介绍一下工厂方法模式(Factory Method Pattern),在实际开发过程中我们都习惯于直接使用 new 关键字用来创建一个对象,可是有时候对象的创造需要一系列的步骤:你可能需要计算或 ...

  7. java/android 设计模式学习笔记(7)---装饰者模式

    这篇将会介绍装饰者模式(Decorator Pattern),装饰者模式也称为包装模式(Wrapper Pattern),结构型模式之一,其使用一种对客户端透明的方式来动态的扩展对象的功能,同时它也是 ...

  8. 设计模式学习笔记(目录篇)

    设计模式学习笔记(目录篇) 为了方便查看,特此将设计模式学习笔记系列单独做一个目录. 1   设计模式学习笔记(一:命令模式) 2   设计模式学习笔记(二:观察者模式) 3   设计模式学习笔记(三 ...

  9. 设计模式学习笔记汇总目录

    这里的学习笔记包含JavaSE和J2EE两部分,持续更新中! 其中关于学习的参考资料如下: 1.菜鸟设计模式 2.Head First Design Patterns(书.强烈推荐); 3.大话设计模 ...

最新文章

  1. ocp 042 第十一章:管理oracle网络配置
  2. 项目经理的10条项目管理心得
  3. 从实例入手学习使用vue+axios配置代理进行跨域访问百度音乐API
  4. 机器学习程序猿在Linux猩球的生存指南
  5. hpuoj--校赛--特殊的比赛日期(素数判断+模拟)
  6. 初识Python 04 day
  7. c51用c语言写PO口复用6,毕业回馈—89C51之GPIO使用(示例代码)
  8. 彼得德鲁克《卓有成效的管理者》——阅读摘要
  9. usb万能驱动win7_我!Win7!还能接着续!Z490 B460 H410 Win7 保姆教程
  10. vi删除选中内容_vi 删除指令的使用
  11. 2022-2023 物联网毕业设计选题推荐
  12. OpenWrt 安装中文语言包
  13. warning: control reaches end of non-void function [-Wreturn-type]
  14. 从零开始之驱动开发、linux驱动(七十一、电容触摸屏驱动)
  15. Android 9 Audio系统笔记:AudioFlinger音频流处理流程
  16. adobe scout cc 2015中文版下载(附使用教程)
  17. 建筑施工员日常工作内容,施工员证全国通用吗?
  18. 002 - new javascript 基础
  19. 算法设计 (分治法应用实验报告)基于分治法的合并排序、快速排序、最近对问题
  20. javascript实现数字补全不足补零

热门文章

  1. opencv中使用K-近邻分类算法KNN
  2. 图像的阈值分割(迭代法选择阈值)
  3. 聚类之K-means均值聚类
  4. [MIPS汇编语言]简单排序实现
  5. class多项式(链表实现)
  6. android通话记录列表apk,android打电话,发短信,获取通讯录、通话记录、短信记录...
  7. knn人脸识别判断_WEEK1_LRamp;KNN
  8. VUE iscroll(银联二维码,浩哥页面用过)
  9. Windows Socket 最大连接数
  10. 初次树莓派遇到的一些小问题