设计模式(一) 基本概念
来源:互联网 发布:在淘宝上开网店程序 编辑:程序博客网 时间:2024/05/01 11:29
一、设计模式概述
GoF 23 种设计模式,加上简单工厂模式,共24种。
使用频率最高:
创建型的有工厂方法模式、抽象工厂模式、单例模式
结构型的有外观模式、适配器模式、代理模式
行为型的有迭代器模式、命令模式、策略模式
学习每个设计模式都应掌握:
这个设计模式的意图是什么,它要解决的什么问题,什么时候使用它(问题、目的);
它是如何解决问题的(解决方案),结构图和关键代码,能联系至少它的两个应用实例,一个生活中的一个软件中的;
这个模式的效果如何,优缺点是什么,在使用时应注意什么(效果)
二、类和类的UML图示
1. UML类图:
(1)类名
(2)属性:成员变量 表示方法: 可见性 名称:类型 [=默认值]
public + , private - , protected #
(3)类的成员函数 可见性 名称(参数列表)[ : 返回类型]
2. 关联关系(实线)
一个类的对象作为另一个类的变量:类A —>类B , A类含有B类的对象作为变量。
(1)双向关联(—):顾客购买商品并拥有商品,卖出的商品与某个顾客相关联,顾客类与售出品类有双向关联;
(2)单向关联(—>):顾客都有地址
自关联(实线箭头指向自己):节点类型
(3)多重性关联:(0, 1, m, *) .. (1, n, *) *表示任意,m, n表示最多m, n个对象
(4)聚合关系:整体与部分。成员对象是整体对象的一部分,但成员对象可以脱离整体对象独立存在。
带空心菱形的实线直线箭头 ◇—> 汽车类◇—>汽车发动机类
(5)组合关系
也表示整体与部分关系,但是整体对象可以控制成员对象的生命周期,一旦整体不存在,成员也将不存在。带实心菱形的实线直线箭头: 头和嘴巴
3. 依赖关系:特定事物的改变可能会影响到使用该事物的其他事物。
带箭头的虚线:从依赖的一方指向被依赖的一方。
4. 泛化关系:继承关系,父类与子类
带空心箭头的直线,从子类指向超类(或基类)
5. 接口与实现关系
带空心三角形的虚线,从具体实现的一方指向抽象接口
三、面向对象设计原则
简单概括,7种常见的面向对象设计原则
设计原则
定义
使用频率
单一职责原则 SRP
一个类只负责一个功能领域的相应职责
四星
开闭原则 OCP
软件实体应对扩展开放,对修改关闭
五星
里氏代换原则 LSP
所有引用基类对象的地方能够透明地使用其子类的对象
五星
依赖倒转原则 DIP
抽象不应该依赖于细节,细节应该依赖于抽象
五星
接口隔离原则 ISP
使用多个专门的接口,而不使用单一的总接口
两星
合成复用原则 CRP
尽量使用对象组合,而不是继承来达到复用的目的
四星
迪米特法则 LoD
一个软件实体应当尽可能少地与其他实体发生相互作用
三星
- 设计模式(一) 基本概念
- 设计模式的学习(一):基本概念
- 设计模式基本概念总结(一)
- 设计模式基本概念
- 数据库设计一《基本概念》
- 设计模式(一)
- 设计模式 (一)
- 设计模式(一)
- 设计模式(一)
- 设计模式(一)
- 设计模式(一)
- 设计模式(一)
- 设计模式(一)
- 设计模式(一)
- 设计模式(一)
- 设计模式(一)
- 设计模式(一)
- 设计模式(一)
- C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
- 王学岗WebView(一)
- HDU#1049:Climbing Worm
- web移动端事件总结
- HY项目中问题总结(tableview 的细节处理以及基类的使用)
- 设计模式(一) 基本概念
- C++预学习
- 一个由CountDownLatch引发的Bug
- C# 求解数学里的组合
- Linux使用操作命令
- LCS最长公共子序列(最优线性时间O(n))
- 做前端的能不能不学习 JavaScript 而直接学习 jQuery ?
- Android Touch时间传递机制
- 文章标题