页数:36页文件大小:384.7 KB来源: 设计模式ppt课件
本课件为课程的基础部分,先说明面向对象设计的层次与变化复用问题,再讲类间关系的UML表示、抽象封装与开闭等设计原则,最后交代设计模式的定义、三类分类与名称、场景、方案、效果四要素。
《设计模式》
第一部分设计模式基础
§1.1面向对象设计与复用
类设计考虑的问题
变化与复用
面向对象的复用mainClassClassClassClass
§1.2模式的层次
微模式(Micro Pattern)例If ( ord == 0 ) {}else if (ord ==2) {}else if (ord ==60) {} else {}switch ( ord ) {case 0:break;case ‘A’:break;case ‘\0’:break;default:break;}
§1.3类间关系及UML表示
普通关联双向关联关系class A {private:B * pB1;B * pB2;};class B {private:A * pA;};普通关联双向多对多关联关系
单向关联(相识关系)单向关联关系class A {private:B * pB;};class B {};组合(合成)关系1)B是A的组成部分;2)A负责B的生存与消亡如:人由头、颈、躯干、四肢组成。例:class A {Public:A() : pB(new B) { }~A() { delete pB; }};聚集(聚合)关系1)B是A的组成部分;2)但A不负责B的生存与消亡。即A存在时,B可以不存在;B存在时,A也可以不存在;如:计算机包括CPU,内存,网卡等。其中的网卡就可独立
依赖关系(实例级关联)#include “B.h”class A {public:void Func(B & b);};泛化关系class A1 {};class B1:public A1 {};实现关系class IA {Public:virtual void func1() = 0;virtual void func2() = 0;};class A:public IA{public:virtual void func1() { }virtual void func2() { }};§1.4 OO设计的原则
基本原则
分离稳定与变化
实现是否变化Class Clock {Public:void SetDate() { }void SetTime() { }void Draw( ) {DrawDate() ; DrawTime(); }Protected:void DrawDate() { }void DrawTime() { }private:Date dt;Time tm;};class IClock {public:virtual void SetCurrent();virtual void Draw( );};Class BaseClock : public IClock {public:void SetCurrent() {SetDate();SetTime();}void SetDate() { }void SetTime() { }void Draw( ) {DrawDate() ;DrawTime();}protected:void DrawDate() { }void DrawTime() { }private:Date dt;Time tm;};针对接口编程Class MyClass {Private:IClock * aClock;//不采用BaseClock * aClock;};
组合优先class A {//…};class EA {private:A * aA;};class EA :public A {};单一职责原则(The singleresponsibility)
开闭原则(Open-Close Principle)
里氏替换原则(The Liskovsubstitution)
依赖倒转原则
依赖倒置说明
多接口分离原则
使用多接口
迪米特法则(委托而不是直接交互)
§1.5设计模式说明
| 生命周期阶段 | 对应的模式类别 |
|---|---|
| 类模版 → 模版类 → 具体类 | 结构型模式(关注如何分解、组织、封装各个类) |
| 类对象的实例化、初始化 | 创建型模式 |
| 类的行为 | 行为型模式 |
| 销毁 | — |
下载地址:{{downurl}}
{{{a}}}
{{#b}}{{{b}}}
{{/b}} {{/title}} {{#nolog}}登陆注册
{{/nolog}} {{#djsx}}点我刷新
{{/djsx}} {{#gocz}} {{/gocz}} {{#ffqr}} {{/ffqr}}