Java与模式

 

1.模式的简史和形而上学

  1.1模式是什么

  1.2软件模式的简史

  1.3模式的起源

  1.4与道家思想的关系

  1.5软件的永恒之道

  1.6模式的要素

  1.7本书讲解模式的格式

2.统一建模语言UML简介

  2.1建造世界贸易中心

  2.2什么是UML

    统一建模语言

    可视化功能

    说明功能

    建造功能

    建文档功能

  2.3UML包括什么

    结构型图

Java与模式_第1张图片

    行为型图

Java与模式_第2张图片

  2.4类图

    显示类、接口及它们之间的静态结构和关系的图

    描述类的类图

Java与模式_第3张图片

    描述接口的类图

 Java与模式_第4张图片

    描述对象的类图

Java与模式_第5张图片

    类图中的关系

      一般化关系

Java与模式_第6张图片

      关联关系

 Java与模式_第7张图片

        常见的基数

Java与模式_第8张图片

    聚合关系

Java与模式_第9张图片

    合成关系

Java与模式_第10张图片

    依赖关系

 Java与模式_第11张图片

  2.5时序图

    在ATM机上查阅账户信息

    垂直的叫生命线

Java与模式_第12张图片

  2.6状态图

    定义一个具有有限个内部状态的机器

  2.7UML及建模的工具

第3章  软件的可维护性与可复用性

3.1软件系统的可维护性

  一个可维护性较好的系统,应当允许维护工作能够以容易、准确、安全和阶级的形式进行

  导致系统腐烂的原因:过于僵硬、过于脆弱、复用率低、粘度过高

  设计目标:可扩展性、灵活性、可插入行

3.2系统的可复用性

第4章  "开-闭"原则(OCP)

4.1什么是开闭原则

  模块可以在不被修改的前提下被扩展

4.2怎样做到开闭原则

   不修改抽象层而扩展实现层

4.3与其他设计原则的关系

4.4策略模式对开闭原则的支持

 4.5在其他设计模式中的体现

  简单工厂模式、工厂方法模式、抽象工厂模式、建造模式、桥梁模式、门面模式、调停者模式、访问者模式、迭代子模式

4.6一个重构做法的讨论

第5章  java语言的接口

5.1什么是接口

  一个接口是一些方法特征的集合

5.2为什么使用接口

  接口是对可插入性的保证

 5.3java接口常见的用法

  单方法接口、标识接口、常量接口、

第6章  抽象类

6.1什么是抽象类

  仅提供一个类型的部分实现

6.2抽象类的用途

  具体类不是用来继承的、抽象类应当用于尽可能多的共同代码、抽象类应当拥有尽可能少的数据

6.3基于抽象类的模式和原则

  针对抽象编程、正确使用继承、模板方法模式

6.4什么时候才应当使用继承复用

  区分has-a与is-a、子类扩展超类的责任、不要从工具类继承

第7章  里氏代换原则

7.1美猴王的智慧

7.2什么是里氏代换原则

  一个软件使用一个基类,一定适用于其子类

7.3里氏代换原则在设计模式中的体现

  策略模式、合成模式、代理模式

7.4从代码重构的角度理解

  长方形和正方形、正方形不可以作为长方形的子类、代码的重构、从抽象类继承

第8章  依赖倒转原则

8.1为何而倒转

8.2复用与可维护性的倒转

8.3依赖倒转原则

  针对接口编程,不用针对实现编程

8.4怎样做到依赖倒转原则

  工厂方法模式、模板方法模式迭代子模式

8.5java对抽象类型的支持

  联合使用java接口和java抽象类

8.6依赖倒转原则的优缺点

  难以实现,技术要求高

第9章  接口隔离原则

9.1什么是接口隔离原则

  不同功能接口按角色分割开来

第10章  合成/聚合复用原则

10.1合成和聚合的区别

10.2复用的基本种类

第11章  迪米特法则

11.1迪米特法则改造

  调用转发

11.2迪米特法则与设计模式

11.3迪米特法则的实现

  将类设置成不变类、降低类的访问权限、谨慎使用Serializable、降低成员的访问权限

第12章  简单工厂模式

 12.1工厂模式的几种形态

  工厂模式专门负责将大量有共同接口的类实例化

12.2简单工厂模式的引进

12.3简单工厂模式的结构

Java与模式_第13张图片

12.4简单工厂模式与其他模式的关系

  单例模式

    自己负责创建自身的实例

  多例模式、备忘录模式、MVC模式

12.5简单工厂模式的优点和缺点

12.6简单工厂模式在java中的应用

第13章  工厂方法模式

13.1工厂方法模式的结构

  Java与模式_第14张图片

 13.2工厂方法模式与其他模式的关系

   COM中的工厂方法模式、EJB中的工厂方法模式、JMS中的工厂方法模式

 第14章  抽象工厂模式

14.1抽象工厂模式的结构

  14.1.1产品的创建

Java与模式_第15张图片

 

  14.1.2系统的设计

Java与模式_第16张图片

14.2使用场景

14.3在农村系统中的实现

14.4相关的模式与模式的实现

第15章  单例模式

15.1引言

15.2单例模式的结构

  饿汉式单例类、懒汉式单例类、登记式单例类、

15.3使用场景

  在一个系统要求一个类只有一个实例时才应当使用单例模式

15.4单例类的状态

  有状态的单例类、没有状态的单例类、多个jvm系统的分散式系统(EJB、RMI、JINI)避免使用

15.5示例:属性管理器

15.6java中的单例模式

  Runtime、Introspector、Toolkit

15.7不完全的单例类

  有公开构造子的单例模式称为不完全单例类

15.8相关模式

第16章  单例模式与MX记录

16.1问题与解决方案

16.2目录服务与MX记录

16.3JNDI架构介绍

16.4如何使用JNDI编程

16.5系统设计

16.6讨论

第17章  多例模式与多语言支持

17.1引言

17.2多例模式

  多例模式的特点、有上限多例类、无上限多例模式、有状态和无状态的多例类

17.3多语言项目的设计

  语言代码、地区代码、Locale代码、Resource文件及其命名规范

第18章  序列生成器与单例及多例模式

18.1问题

  预定式键值存储办法,一次预定多个键值(键值区间)

18.2将单例模式应用到系统设计中

  无数据库方案、有数据库方案、键值缓存方案、有缓存的多序列键生成器

18.3将多例模式应用到系统设计中

18.4讨论

第19章  建造模式

19.1引言

19.2建造模式的结构

  抽象建造者角色:给出一个抽象接口,以规范产品对象的各个组成成分的建造

  具体建造这角色:创建产品的实例

  导演者角色:调用创造者角色创建产品

  产品角色

Java与模式_第17张图片

 

19.3建造模式的活动序列

Java与模式_第18张图片

 

19.4建造模式的实现

  空的零件构造方法、省略抽象建造者角色、省略导演者角色、过渡到模板方法模式、合并建造者角色和产品角色

19.5众神造人的神话故事

19.6JavaMail的建造模式

19.7发送邮件的例子

19.8使用场景

  需要生成的产品有复杂的内部结构、需要生成的产品对象的属性相互依赖

第20章  原始模型模式

20.1引言

Java与模式_第19张图片

 

20.2建立、对象以及对象的引用

20.3java对象的复制

20.4原始模型模式的结构

  简单形式

Java与模式_第20张图片

 

  登记形式

Java与模式_第21张图片

 

20.5模式的实现:深复制和浅复制

20.6孙大圣的身外化身法术

20.7使用场景

  产品类需要动态加载

20.8原始模型模式的优缺点

20.9原始模型模式与其他模式的关系

第21章  javaBean的冷藏和解冻

21.1什么是冷藏和解冻

21.2什么可以冷藏

21.3bean.instantiate方法

21.4jsp中使用bean.instantiate方法

21.5与装饰模式的关系

第22章  适配器模式

22.1引言

22.2类的适配器模式的结构

  目标角色:目标接口

  源角色:需要适配的接口

  适配器角色

Java与模式_第22张图片

 

22.3类的适配器模式的效果

22.4对象的适配器模式的结构

Java与模式_第23张图片

 

22.5使用场景

  系统需要使用现有的类,而此类的接口不符号系统的需要

  建立一个可以重复使用的类,用于与一些彼此直接没有太大关联的类

22.6iterator与enumeration

22.7适配器模式在架构层次上的应用

22.8理由适配器模式指方为圆

22.9关于模式实现的讨论

22.10适配器模式与相关模式

第23章  缺省适配模式

23.1鲁智深的故事

23.2window adapter是缺省适配模式

23.3模式的结构

23.4使用场景

  不准备实现一个接口的所有方法时,可以制造一个抽象类,给出所有方法的平庸实现。

23.5实现

23.6j2ee中的缺省适配模式

Java与模式_第24张图片

23.7例子

第24章  XMLProperties与适配器模式

24.1引言

24.2SAX2浏览器

24.3开始XMLProperties项目

第25章  合成模式

25.1对象的树结构

  由上向下的树图,子节点不知道父节点

Java与模式_第25张图片

  由下向上的树图,父节点不知道子节点

Java与模式_第26张图片

  双向的树图

Java与模式_第27张图片

 

 

25.2介绍合成模式

25.3安全式和透明式的合成模式

  抽象构件角色、树叶构件角色、树枝构件角色

Java与模式_第28张图片

 

 

25.4安全式的合成模式的结构

25.5透明式的合成模式的结构

25.6合成模式的实现

25.7道士的故事

25.8绘图的例子

25.9AWT中的例子

25.10与其他模式的关系

第26章  装饰模式

26.1引言

26.2装饰模式的结构

  抽象构件角色:给出一个抽象接口,接收附加责任的对象

  具体构件角色:定义要接收附加责任的类

  装饰角色:持有一个构件对象的实例,定义一个与抽象构件接口一致的接口

  具体装饰角色:负责给构件对象“贴上”附加的责任

Java与模式_第29张图片

26.3使用场景

  扩展类的功能或增加附加责任

26.4孙大圣的故事

26.5装饰模式优缺点

26.6装饰模式实现的讨论

26.7与其他模式的关系

26.8示例:GrepRead

26.9发票系统

第27章  设计模式在I/O库中的应用

27.1引言

27.2I/O库的设计原则

27.3装饰模式的应用

27.4半透明的装饰模式

27.5适配器模式的应用

27.6从byte到char流的适配

第28章  代理模式

28.1引言

28.2代理的种类

  远程代理、虚拟代理、复制代理、保护代理、Cache代理、防火墙代理、同步化代理、只能引用代理

28.3代理模式的结构

  抽象主题角色:声明真实主题和代理主题共同的接口

  代理主题角色:真实主题的引用

  真实主题角色:代理角色代表的真实对象

Java与模式_第30张图片

 

28.4代理模式的时序

Java与模式_第31张图片

28.5Java2.0对代理模式的支持

  反射与动态代理

28.6高老庄悟空降八戒

28.7代理模式的优缺点

28.8代理模式的实现

第29章  智能引用代理

29.1问题

29.2系统设计

29.3系统的时序

Java与模式_第32张图片

 

29.4系统的源代码

28.5与其他模式的关系

第30章  虚拟代理

30.1问题

30.2系统的要求

30.3系统设计

Java与模式_第33张图片

30.4系统的时序

Java与模式_第34张图片

30.5系统的源代码

30.9与其他模式的关系

第31章  享元模式

31.1引用

31.2单纯享元模式的结构

  抽象享元角色:具体享元类的超类,为这些类规定出需要实现的公共接口

  具体享元角色:实现抽象享元角色锁规定的接口

  享元工厂角色:负责创建和管理享元角色

  客户端角色:维护一个对所有享元对象的引用

Java与模式_第35张图片

31.3复合享元模式的结构

Java与模式_第36张图片

31.4模式的实现

31.5一个咖啡摊的例子

31.6咖啡屋的例子

31.7使用场景

  系统有大量对象,对象消耗大量内存,对象状态大部分可以外部化,可以按内蕴状态分组,对象不可分辨

31.8代码重构看享元模式

31.9享元模式的优缺点

31.10相关模式

第32章  门面模式

32.1引言

32.2结构

  门面角色:客户端可以调用这个角色的方法

  子系统角色:同时可以有多个子系统

Java与模式_第37张图片

 

32.3实现

32.4使用场景

32.5迪米特法则

32.6例子

32.7设计

32.8Session

第33章  桥梁模式

33.1引言

33.2结构

  抽象画角色、修真抽象画角色、实现化角色、具体实现化角色

Java与模式_第38张图片

33.3Peer架构

33.4驱动器和JDBC驱动器

33.5重构

33.6其他模式

33.7八戒“转世投胎”的故事

33.8实现

33.9使用场景

第34章  不变模式

34.1引言

34.2结构和实现

34.3应用

  String类,封装类

34.4优缺点

34.5与其他模式

第35章  策略模式

35.1引言

  环境角色:持有一个Strategy类的引用

  抽象策略模式

  具体策略模式:包装了相关的算法或行为

Java与模式_第39张图片

35.2实现

35.3例子

35.4排序策略系统

35.5图书折扣的计算

35.6使用场景

35.7优缺点

35.8与其他模式的关系

35.9设计原则

35.10这领导锦囊妙计

35.6例子:复数类

第36章  模板方法模式

36.1引言

36.2结构

36.3好莱坞原则

36.4例子

36.5继承作为复用的工具

36.6应用

  HttpServerlet、AbstractTableModel

36.7方法

36.8代码重构

36.9重构原则

36.10西天取经的八十一难

第37章  Servlet技术中的模式

37.1Servlet技术介绍

37.2模板方法模式的使用

37.3观察者模式的应用

第38章  观察者模式

38.1引言

38.2结构

38.3实现

38.4应用

38.5菩萨的守瓶龟

38.6DEM事件机制

38.7与其他模式的关系

第39章  观察者模式与AWT中的事件处理

39.1引言

39.2DEM的结构

第40章  观察者模式与SAX2浏览器

40.1引言

40.2SAX2是怎么工作的

40.3ContenHandler接口

40.4实现

40.5使用

40.6缺省适配模式与DefaultHandler

40.7简单工厂模式的应用

第41章  观察者模式与Swing定时器

41.1为什么需要定时器

41.2Utility定时器和Swing定时器的区别

41.3使用Swing定时器的方法

41.4观察者模式的应用

41.5单例模式的应用

第42章  MVC模式与用户输入数据检查

42.1什么是MVC模式

42.2MVC是架构模式

42.3应用

42.4代码重构

42.5用户输入检查与MVC模式

42.6SQL注射

第43章  迭代子模式

43.1引言

43.2结构

43.3实现

43.4优缺点

43.5例子

43.6与其他模式的关系

第44章  Java对迭代子模式的支持

44.1Java聚集

44.2Java聚集中的迭代子

44.3java.util.Iterator接口

44.4java迭代子接口ListIterator

44.5Enumeration与Iterator

44.6其他相关模式

第45章  责任链模式

45.1击鼓传花

45.2结构

45.3传的与不纯的责任链模式

45.4AWT事件处理机制

45.5击鼓传花

45.6java系统的解

45.7责任链模式的实现

45.8对象的树结构

45.9DHTML中的事件处理

45.10与其他模式的关系

第46章  定时器与击鼓传花

46.1线程

46.2定时器

46.3击鼓传花

第47章  命令模式

47.1引言

47.2结构

47.3玉帝传美猴上天

47.4AWT的事件处理

47.5创世纪系统

47.6AudioPlayer系统

47.7增加宏命令功能

47.8实现

47.9使用场景

47.10优缺点

47.11与其他模式的关系

 第48章  Swing中的命令撤销和恢复

48.1在视窗系统中使用命令模式

48.2Swing的基本撤销功能

48.3一休论禅的文字框

第49章  备忘录模式

49.1结构

49.2白箱实现

49.3双重接口

49.4黑箱实现

49.5负责人角色的增强

49.6多重检查点

49.7自述历史模式

49.8假如协议模式

49.9与其他模式的关系

49.10应用

49.11优缺点

49.12观世音甘泉活树的故事

第50章  状态模式

50.1引言

50.2结构

50.3曾侯乙编钟的描述

50.4效果

50.5应用场景

50.6实现

第51章  崂山道士与状态模式

51.1有状态的墙

51.2异常逻辑

51.3从代码重构的角度考察

第53章  访问者模式

53.1引言

53.2结构

53.3时序图

53.4使用场景

53.5实现

53.6问题与对象

53.7设计

53.8与其他模式的关系

 第54章  解释器模式

54.1引言

54.2结构

54.3实现

54.4有关模式

第55章  调停者模式

55.1引言

55.2结构

Java与模式_第40张图片

55.3实现

55.4迪米特法则

55.5优缺点

55.6使用场景

55.7相关模式

附录:设计模式

  创建模式:对类的实例化过程的抽象化--简单工厂模式、工厂方法模式、抽象工厂模式、单例模式、多例模式、建造模式、原始模型模式

  结构模式:描述如何将类或者对象结合在一起形成更大的结构--适配器模式、缺省适配模式、合成模式、装饰模式、代理模式、享元模式、门面模式、桥梁模式

  行为模式:对不同对象之间划分责任和算法的抽象化--不变模式、策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、解释权模式、调停者模式

转载于:https://www.cnblogs.com/plxz/p/9565803.html

你可能感兴趣的:(设计模式,测试,java)