设计模式之开篇

设计模式之开篇

        关于设计模式的学习,其实我自己已经整理了一份笔记了,只不过我很久之前系统的学习还有整理了一遍,需要直接获取我自己的全套笔记的也可以私聊访问我的github地址哈。

        好了,言归正传。在正式介绍设计模式之前,我想要先说一下关于设计模式的一些东西。

什么是设计模式?为什么要写设计模式?为什么要用设计模式?什么时候要用设计模式?好像还有不少问题,总之我不希望自己对一些东西自己都没有思考过,跟风的去学习,去使用设计模式,导致滥用设计模式。

        老祖说,学以致用。是的,我们学习就是为了使用的,那么什么人会用呢,对于开发者开说,我想先说一下,我是一名java开发者,所以往后的文章基本会以java的语法的方式来结合使用。我们都是软件开发者,是写软件的,既然是写软件就是为了写优秀的,好的软件系统。

         通常认为,一一个易于维护的系统,就是复用率较高的系统:而一个复用性较好的系统, 就是一个易于维护的系统。但是实际上,可维护性和可复用性是两个独立的目标,就像两 只奔跑的兔子一样,并不总是方向一致的。

软件系统设计的两个重要特性

对于面向对象的软件系统设计来说,在支持可维护性(Mainainabiliy) 的同时,提高系统的可复用性(Reusebility) 是一个核心的问题。

导致可维护性低的四个原因

Rober C. Martin 在[MARTINOIMARTIN96]中指出,导致一个软件设计的可维护性较 低,也就是说会随着性能要求的变化而“腐烂”的真正原因有四个:

1. 过于僵硬(Rigdity)

        难以加入新的性能和模块。

2. 过于脆弱(Fragility)

        修改已经存在的代码,会导致其他模块或代码出现bug。

3.复用率低(mobilil)

        包括代码、模块、数据结构等的在其他模块重复使用。

4.粘度过高Viscosiy.

        修改时,可以以第一种方式:以原始设计意图和原始框架设计进行修改,也可以以破坏原始设计框架的方式进行修改,如果以破坏的方式进行修改比较容易的话,那么就是粘度过高。为什么粘度过高,不好。因为一第一种方式对系统的未来比较有利,第二种是权宜之计,可以解决短期问题,对中长期比较不利。

比较好的系统设计与目标

1.可拓展性

新的功能很容易的加入,不会涉及其他模块。

2.灵活性

可以平稳的修改原有代码,不会影响其他模块。

3.

可插入性

可以很容易的将一个类i抽离出去,同时可以将同样接口的类插入进来。也就是粘度过高的反面。

可复用性

软件的复用的好处

第一,较高的生产效率:

第二,较高的软件质量:

第三,恰当 使用复用团以善系统的可维护性

传统的复用

1.代码的剪贴复用 利用现代的代码编辑器、集成开发环境(IDE)着,可以很容易地做到碱少抄写代码 的人力成本。这虽然比完全没有复用好些但是靠剪贴源代码达到复用,仅仅是复用的 最初步的做法。

2.算法的复用 

        各种算法比如排序算法得到了大量的研究。现在几乎不会有人在应用程序编程时试图 建立自己的排序算法,通常的做法是在得到了很好的研究的各种算法中选择一个。这就是 算法的复用。

 3.数据结构的复用与算法的复用相对的, 是数据结构的复用。如队、站、队列、列表等数据结构。

        传统的复用方案的一个致命缺陷就是复用常常是以破坏可维护性为代价的[KIRK02]. ​ 比如两个模块A和B同时使用另一个模块C中的功能。那么当A需要C增加一个新的行为的时候,B有可能不需要、甚至不允许C增加这个新行为。如果坚持使用复用,就不得不以系统的可维护性为代价;而如果从保持系统的可维护性出发,就只能放弃复用。

4.面向对象的复用

        像Java这样的面向对象的言中,数据的 抽象化、 继承、封装和多态性是几项最重要的语言特性, 这些特性使得一个系统可以在更高层次实现复用。多态性使得实现和应用可以 复用[PALS90];  抽象化和继承关系使得概念和定义可以复用: 而括象化和封装可以保持和促进系统的可维护性。复用的焦点不再集中在细节,这样一来 就集中在重要的含有宏观商业逻辑的抽象层次上。换言之, 复用的焦点发生了“倒转”。 发生复用焦点的倒转并不是因为实现细节的复用不再重要,而是因为这些细节上的复 用往往已经做得很好,而且抽象层次是比这些细节更值得强调的复用焦点,因为它们是在 提高复用性的同时保持和提高可维护性的关键。

总结起来,这篇文章只有一句话:

        在面向对象设计里,可维护性的复用是以设计原则和设计模式为基础的,使用适当的设计模式可以使软件系统具备更好的可维护的复用性,提高灵活性可维护性和可插入性。

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

推荐阅读更多精彩内容