Java基础

设计模式1.绪论

2018-11-27  本文已影响2人  卢卡斯哔哔哔

点击进入我的博客

1.1 设计模式概述

什么是设计模式

设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。
设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。

什么是GOF

在 1994 年,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四人合著出版了一本名为 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 的书,该书首次提到了软件开发中设计模式的概念。

面向接口编程

面向接口编程的真正意思是面向超类型编程,更明确的说,变量的声明类型应该是超类型,通常是一个抽象类或者是一个接口。

优先使用组合而不是继承

使用组合建立系统具有很大的弹性,不仅可以将算法族封装成类,还可以“在运行时动态的改变行为”,只要组合的行为对象符合正确的接口标准。

1.2 UML类图

1.2.1 概念

什么是UML

Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。

UML的好处

可视化功能、说明功能、建造功能、建文档功能

UML九种图
UML九种图
结构型图
结构型图
行为型图
行为型图

1.2.2 类图

类图概念
类图
类图

在上面的类图中可以看出,表示类的框分为以下几层:

  1. 类名:如果类名是正体字,表明类是具体的,即是可以实例化的,变量名如果是斜体字,表明类是抽象的。
  2. 属性清单:属性的左面是+表示它是public-表示private#表示是protected
  3. 方法清单:方法的左面是+表示它是public-表示private#表示是protected
  4. 性质清单:性质是由一个属性,一个赋值函数,一个取值函数构成的。
  5. 内部成员层:如果一个类有内部成员类,它的类就会有五层,在类的类图中,除了类名层是不能省略,必须显示的以外,其它的几层都可以在UML图中省略。
描述接口的类图

接口的类图和类的类图几乎一样,唯一的区别是接口的名有interface的字样。

1.2.3 类图中的关系

泛化(Generalization)

是一种继承关系,表示一般与特殊的关系,它指定了子类如何继承父类的所有特征和行为。


泛化
实现(Realization)

是一种类与接口的关系,表示类是接口所有特征和行为的实现。


实现
关联(Association)

关联是类与类之间的连接,它使一个类知道另一个类的属性和方法;关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。


关联
聚合(Aggregation)

聚合关系是关联关系的一种,是强的关联关系
聚合是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。
关联和聚合在语法上无法区分,必须考察具体的逻辑关系。

聚合
合成(Composition)

合成关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
合成是整体与部分的关系,但部分不能离开整体而单独存在

合成
依赖(Dependency)

依赖是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖。
依赖关系在Java中体现为局部变量、方法的参量,以及对静态方法的调用。


依赖

1.2.4 时序图

时序图又叫做序列图、活动序列图,作为交互图的一种,时序图按照时间顺序从上往下显示每个使用案例。
时序图的主要用途是把用例表达的需求,转化为进一步、更加正式层次的精细表达。


时序图

角色:可以是人或者其他系统、子系统。
生命线:代表一个对象存在的时间。
激活条:对象操作执行时期,处于激活的状态。使用条状矩形表示,附着于对象生命线上 。
消息:消息用从一个对象的生命线到另一个对象生命线的箭头表示。箭头以时间顺序在图中从上到下排列。
同步消息:发送人需要等待消息的响应,实心箭头表示。
异步消息:发送不需等待消息的响应,线性箭头表示。
返回消息:虚线的线性箭头表示。

1.2.5 状态图

状态图(State Diagram)又称做状态转换图(State Transition Diagram)。状态图的基本想法是定义一个具有有限个内部状态的机器,因此状态图又称作有限状态机。对象被外界的时间激发,从而从一个状态转换到另一个状态。

1.3 软件设计原则

1.3.1 开闭原则(Open Close Principle)

1.3.2 里氏代换原则(Liskov Substitution Principle)

1.3.3 依赖倒转原则(Dependence Inversion Principle)

1.3.4 接口隔离原则(Interface Segregation Principle)

1.3.5 迪米特法则(Demeter Principle)

1.3.6 合成复用原则(Composite Reuse Principle)

尽量使用合成、聚合的方式,而不是使用继承

1.4 设计模式分类

设计模式总结图

1.4.1 创建型模式

这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用new运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。

1.4.2 结构型模式

这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。

1.4.3 行为型模式

这些设计模式特别关注对象之间的通信

1.4.4 J2EE 模式

这些设计模式特别关注表示层。这些模式是由Sun Java Center鉴定的。

上一篇 下一篇

猜你喜欢

热点阅读