Java设计模式-导航

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yqj2065/article/details/8592375

最后编辑时间:2018.5.30

面向对象设计:原则、模式和应用(Java8)

返回


本学期(2017-2018-2)围绕上机题展开

实验1.框架设计者

实验2.行为参数化

实验3.使用工具类God

实验4 求和方法的一般化 累积函数

实验5 复合函数-桥接模式

实验6 表达式问题-访问者和解释器

第0章 基础

本书讨论面向对象(的软件)设计(Object Orientation Design、OOD)。首先将介绍面向对象技术的思考模型和基础——何谓面向对象编程范式(Object Orientation paradigm )。

【注:面向对象与命令式编程范式函数式编程范式关系,见编程宗派的融合(从范式,到编程范式,到编程宗派(风格)】

面向对象编程范式是以柏拉图原则Liskov原则Parnas原则(合称PLP-脑图)为基石构建的面向对象范式的逻辑体系。

在长期的设计实践中,人们总结或归纳出诸多的经验,这些经验,有些被称为设计原则——软件设计时需要遵循的一系列理想化的原则;有些被称为设计模式——设计中可复用的各种(软件)结构。本章将简要介绍相关内容,并在后续章节中深入探讨。

第1章 框架设计

本章通过对排序算法的测试(实验1.框架设计者),引入单一职责原则、针对接口编程/抽象依赖原则、框架(分层设计、控制反转)等原则和概念,初步介绍回调机制和Java的lambda表达式。

第2章 行为参数化


第3章 创建对象


第4章 多重策略

本章通过设计累积函数,引入策略模式的扩展、模板方法模式(5.10);通过设计实验5 复合函数,引入桥接模式。模板方法模式与桥接模式都属于多重策略的使用,前者并联,后者串联。

第5章 类型闭包


第6章 表达式问题





yqj2065的讲义,一直会调整。

第0章 基础

0.1 面向对象编程范式 脑图
0.1.3 Parnas原则 (接口与实现分离) 《编程导论(Java)·6.1封装性》

0.2 设计原则概述 

0.2.1 开放封闭原则 (类的OCP,参见第2章。函数的OCP,参见第3章。)

 何谓设计模式

第1章 抽象依赖原则

1.1 抛弃依赖倒置原则 

1.1.1 编译时依赖  介绍继承和使用

1.1.2 针对接口编程

1.1.3 策略模式(5.9)

1.1.4 分层、框架和控制反转

1.1.5 DIP是什么

1.2 ADP的使能工具

1.2.1 不得使用new

1.2.2 工具类God 

1.2.3 依赖注入容器 

2.3.4 配置文件Vs. 标注 @ 增强tool.God  @Spring工具的简单使用 

2.3.5 工厂模式 准备将2.1.1 简单工厂模式 2.1.2 工厂方法模式(3.3工厂模式的enum实现 2.1.3 抽象工厂模式(3.1) 压缩为一节。

2.4 其他创建型模式 

2.4 .1装配厂模式 

2.2.1 伪建造者模式
2.2.2 建造者模式(3.2)
2.2.3 串接式setter模式 略

2.4.2 零例、单例和对象池

2.4.3  原型模式(3.4)


第3章 多重策略

3.2 桥接模式(4.2)

3.3 模板方法模式(5.10)

第5章 类型闭包


第6章 表达式问题

4.1 模拟双分派

4.2 访问者模式(5.11)

4.3 解释器模式(5.3)


第3章 

第4章 行为参数化 

4.1 引子

4.1.1 值参数化  4.1.2 强大的动态绑定 4.1.3 行为参数化 4.1.4 回调机制(Call back) 

4.1单向依赖原则 @好莱坞原则 最简单的Java框架 

4.3模板方法模式   @传统模板方法模式(5.10)   +显式回调  脑图
4.4 桥接模式(4.2) 

4.6 观察者模式(5.7) 

5.3 适配器模式(4.1)   5.3.3 可插入的适配器(Pluggable Adapter)

3.4 命令模式(5.2)   命令模式之2 Invoker Vs. Client   模拟双分派  命令模式(5.2)的结构推导
3.5 访问者模式(5.11)  访问者模式的意图  访问者模式与双分派   访问者模式(5.11)之对象结构  访问者模式-好人打贱人(这么分散!)

3.7 Null对象  略


第5章 属性型模式 

4.1虚域模式  略
4.3享元模式(4.6)
4.2 状态模式(5.8) 有限状态机

4.5 备忘录模式(5.6)

第6章 委派型模式 154

5.1 小方法模式  略
5.2 代理模式(4.7) 

5.2.1保护型代理(protection proxy) 106
5.2.2动态代理(dynamic proxy) 106
5.2.3 Java RMI (Remote Method Invocation,远程方法调用) 106

5.5 装饰模式(4.4)
5.6 外观模式(4.5)
5.7中介模式(5.5)


第7章 结构型模式213

6.1 责任链模式(5.1)
6.2 组合模式(4.3)
6.3 迭代器模式  略

第8章 目标型模式283

7.1 解释器模式 解释器模式 2 中序表达式 to 后序表达式


第9章 回顾 338


附录
附录A Astah Community
附录B 模式映射表
附录C参考资料



在讲授“信息系统分析与设计”课程的时候,需要介绍一些设计模式;又由于在[编程导论]出版过程中,清华大学出版社的魏江江主任给我寄来了两本设计模式方面的书籍,因而yqj2065决定将设计模式方面的知识全面梳理一番。

 ①推导出常用的设计模式。
GoF在[设计模式•引言]中写道:“这本书的目的就是将面向对象软件的设计经验作为设计模式记录下来”。这种“记录”或者说归纳,对于广大程序员成功地共享设计经验作出了重大贡献。然而,将设计模式作为前辈的经验总结或者既定事实,对于学习设计模式,特别是能够灵活使用设计模式是一个错误的诱导。许多设计模式的学习者如同拿一本字典学习英语一样。

本系列的基本方法是从各种假定出发,通过重构源代码或者遵循设计原则的编写源代码,以获得设计模式。
虽然有点像作弊——知道最终结果的推导和证明,然而在推导的过程中,我们能够看到一个模式更多的变化、能够知道一个模式的优缺点/适应性、能够知道一个模式与其他模式的思路上的关联(而不是UML类图结构上的形似)。


②解释更清晰和简明。这是站在巨人的肩膀上,对巨人的经典加以吹毛求疵。
以我对面向对象的认识,[设计模式]中有许多解释显得晦涩、不严密、甚至错误。一个典型的例子是[设计模式]使用回调/好莱坞法则解释模板方法模式(5.10),而在我看来,观察者模式则是回调/好莱坞法则的简单推论。[设计模式]对桥接模式(4.2)的解说非常难解。再例如,我认为备忘录模式(5.6)Memento对象可以是不变对象,不必要强调“封装性”。


③补充常用的模式。如依赖注入等。

④以内在的联系,将若干模式串联起来...


2017.02.20:上课期间,本导航会改为面向对象设计(Java),汇集20:16-2017-1学期的教学资料(32授课学时+12上机学时)。重新修改了许多博文内容。

(yqj2065提示:不时编辑中,转载请谨慎。欢迎拍砖。)

1.强烈建议学习设计模式(Java)时使用BlueJ。相关博文中,我不想画UML图而是采用BlueJ的界面截图。
2.强烈建议学习设计模式时,除了文中列出的代码外,请你自己动手敲未列出的代码。

猜你喜欢

转载自blog.csdn.net/yqj2065/article/details/8592375