设计模式

1 软件设计原则和设计模式概览

1.1 面向对象设计原则

单一职责原则(SRP) 变化分离
开闭原则(OCP) 对可变性封装
里氏替换原则(LSP) 如何进行集成
接口隔离原则(ISP) 恰当地划分角色和接口
依赖倒转原则(DIP) 针对接口编程

1.2 GOF设计模式

GOF

1.3 C嵌入式编程设计模式

基本的嵌入式设计模式
硬件代理模式
硬件适配器模式
中介者模式
观察者模式
去抖动模式
中断模式

1.4 其他设计模式

Object Pool模式
Dependency Injection依赖注入
Null Object模式
Plug-In模式
Active-Object模式
Abstract Server模式

1.5 架构模式

Pipe Filter架构模式
Layer架构模式
Microkernel Pattern
MVC

2 设计模式思想与困惑——你了解设计模式吗?

2.1 软件设计模式——模式到底是什么?价值在哪里?

1.什么是模式
2.为什么需要设计模式?
3.设计模式能够给我们带来什么
4.设计模式学习面临的困难和解决思路
5.从了解模式到正确应用模式
6.案例分析——某电信业务系统,在使用模式前的解决方法 和 使用模式后的 对比

2.2 软件设计模式本质——你真的知道模式背后的原理吗?

1.发现变化并封装变化
2.把变化与不变分离
3.针对接口编程,而不是针对实现
4.组合优于继承
5.案例分析——某电信认证项目设计分析,分析模式背后的本领

2.3 什么是好的设计——难道使用设计模式就是好的设计吗?

1.什么是好的设计?
2.难道不使用设计模式就是坏的设计吗?
3.为什么需求变化总是使你痛苦?和你的设计有关系?
4.好的系统设计应该有如下的性质:可扩展性、灵活性、可插入性
5.设计模式可以使你的设计更灵活,更易复用,更具可扩展性
6.案例分析——某电信项目4种设计方案的对比

3 设计模式应用策略1——面向对象思维

3.1 面向对象思维是模式基础

1.面向对象分析与设计的本质
2.面向对象设计思维与面向过程设计思维——职责驱动设计
3.抽象本质
4.封装本质
5.继承本质
6.多态本质
7.面向对象常见的错误认识——思考OO带来的价值
8.为什么学习设计模式需要面向对象思维
9.从面向对象到模式再到真正的面向对象
10案例分析——某ERP项目,使用面向对象设计和过程设计的PK,难道面向对象就一定是最优的?你真正理解面向对象吗?面向对象到底真正有哪些好处,不要人云亦云!

3.2 面向对象设计原则(principles)

SOLID
单一职责原则(SRP) 变化分离
开闭原则(OCP) 对可变性封装
里氏替换原则(LSP) 如何进行集成
接口隔离原则(ISP) 恰当地划分角色和接口
依赖倒转原则(DIP) 针对接口编程

4 设计模式应用策略2——嵌入式C语言如何使用设计模式

通过将面向对象技术与C语言结合,以提升C语言的简洁性、易读性和重复使用性,进而提升嵌入式系统分析及架构设计的技术能力

4.1 OO思想与标准C语言应用

1.了解模式——需要知道自己不知道
2.C程序的基本组成
3.数据类型
4.数据运算
5.结构及动态内存分配
6.外部变量与静态函数
7.认识对象(Object)
8.对象沟通方法
9.对象沟通实例
10.认识接口(Interface)
11.接口应用实例
12.案例分析——演示C语言如何实现OO代码

4.2 嵌入式C语言应用设计模式

1.面向对象的视角,重新审视嵌入式系统,全面总结了嵌入式系统中常见的以及关键的设计模式
2.嵌入式C语言应用设计模式的不同
3.以下以嵌入式项目为案例分析,应用设计模式
4.硬件代码模式
5.硬件适配器模式
6.中介者模式
7.观察者模式
8.去抖动模式
9.中断模式
10.案例分析——演示C语言如何应用设计模式

5 设计模式应用策略3——临摹大师

看看大师怎样使用设计模式,他们也是在滥用设计模式吗?

5.1 研读经典系统——学习那些大牛如何使用设计模式

1.学习设计模式后,可是无法使用在真实项目的症状
2.分析经典作品,重新思考设计模式的威力
3.研读设计模式的关键要素

5.2 模式案例——JUnit设计模式应用分析

1.Erich Gamma和Kent Beck的JUnit
2.JUnit架构思路(微内核模式)
3.JUnit的设计,哪些值得我们学习
4.设计JUnit的过程中是怎样应用设计模式的
5.学习设计模式
6.通过研读经典学习到什么

6 设计模式应用策略4——你如何用模式去思考

有时放弃模式更值得学习

6.1 用模式思考系统设计

1.基于模式的设计系统
2.用模式思考的过程
3.模式的应用层次和组合应用模式
4.基于模式的方法和步骤

6.2 模式案例——缓存系统

1.项目系统背景和需求
2.缓存任何对象,任何java对象都可以缓存
3.拥有全面的API-给你全面的程序来控制所有的缓存的特性
4.永久缓存——缓存能随意地写入硬盘,因此允许昂贵的创建数据来保持缓存,甚至能让应用重启
5.支持集群——集群缓存数据能被单个的进行参数配置,不需要修改代码
6.缓存记录的过期——你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时)
7.系统的设计思考过程
8.展示如何用模式进行设计
9.学习设计模式

7 设计模式应用策略5——重构到模式

7.1 重构到模式

1.设计坏味道概述
2.重构思想
3.理解如何结合重构和模式
4.用模式导向的重构(pattern-directed refactoring)改善基友代码设计
5.找出需要进行模式导向重构的代码段
6.了解为什么使用模式来改善既有的设计要优于在新的设计早期使用模式
7.一组坏味道,表示需要进行模式导向的重构
8.实现同一模式的不同方式的示例
9.什么时候应该通过重构实现模式、趋向模式以及去除模式给出的建议
10.常见设计模式的重构演化过程
11.案例分析——通过一个大型电信系统案例分析,如何通过重构引入设计模式

7.2 案例——遗留系统如何使用设计模式

1.拒绝退化——首先不要伤害
2.关注点分离
3.通过案例分析,如何修改遗留代码,而不破坏现有系统代码结构,引入设计模式
4.案例分析——通过一个系统案例分析,如何在维护遗留系统时,通过分离制作,关注点分离,实现对遗留系统不伤害,从而引入设计模式

8 设计模式应用策略6——设计模式对比大讨论

1.创建型模式讨论
  1)简单工厂 工厂方法  抽象工厂
  2)Abstract Factory, Builder, Prototype
  3)单例模式
2.行为型模式
  1)Adapter, Bridge
  2)Composite, Decorator, Proxy
  3)Façade, Adapter, Proxy
  4)Composite, Iterator
3.结构性模式
  1)封装变化——Strategy/Iterator
  2)封装结构——Mediator与Façade
  3)对象作为参数——Visitor/Command/Mementor
  4)通信应该被封装还是被分布——Mediator/Observer
  5)对发送者和接收者解耦——Command模式与职责链模式
  将实践中常容易混淆或常常联合使用的几个模式放在一组讨论,对比分析,讲解思想。如何发现、应用更多模式。通过对“相似或相关的设计模式”的对比分析,加深理解,是避免“模式误用”的好方法

9 设计模式应用策略7——综合应用分析

大型系统的设计案例分析,介绍如何预先应用模式,以及如何在第3版本重构时导入模式,以及在后期维护时应用模式
1.某省移动线路资源维护系统的背景介绍
2.系统需求分析
3.如何根据应用系统特点,和变化与不变等原因,引入模式
4.根据应用功能,导入设计模式
5.第1版本上线时的系统设计分析
6.第1版本,系统设计时遗留的问题,设计不足,缺陷等分析
7.第2版本,由于增加新功能导致的严重问题分析
8.系统出现很多设计不足
9.第3版本,由于增加新功能导致的严重问题分析
10.系统开始引入重构,系统的坏味道,以及重构,分析在重构时是如何使用重构
11.分析第4版本的系统设计
12.系统在后续维护过程之中,设计情况,以及如何在维护时期应用模式

10 设计模式应用策略8——设计模式总结

1.设计模式不是银弹
2.设计模式真正给设计者带来的价值
3.设计模式仅仅是工具
4.超越设计模式
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,701评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,649评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,037评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,994评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,018评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,796评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,481评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,370评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,868评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,014评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,153评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,832评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,494评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,039评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,437评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,131评论 2 356

推荐阅读更多精彩内容

  • 设计模式基本原则 开放-封闭原则(OCP),是说软件实体(类、模块、函数等等)应该可以拓展,但是不可修改。开-闭原...
    西山薄凉阅读 3,798评论 3 14
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,775评论 2 17
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 3,948评论 1 15
  • 原文链接:http://blog.csdn.net/zhangerqing http://www.cnblogs....
    孤独杂货铺阅读 1,517评论 0 3
  • 真正想要是什么, 最好结果又为何, 如你所愿做什么, 哪些资源手中握, 何人拥有资源多, 哪些能力被打磨, 开始行...
    耶底di亚阅读 200评论 0 1