`
hong0104
  • 浏览: 16652 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

设计模式入门—设计模式原则

阅读更多

这篇文章, 不需要你一次就看懂 , 如果你真的能一次都看懂 , 我想 设计 模式 对于你来说已经没什么难度了.. 因为设计模式就是要体现这些原则的 , 你可以把设计原则看做是一门语言 , 设计模式是由这些语言编码的程序 .. 你既然已经明白 , 精通了语言 , 剩下的编码自然是很简单的事情 , 编码的越多则经验越多 , 经验越多则对原则的理解就越深 ... 这是一个 学习 领悟 的过程..

     我希望这篇文章能帮助新人感受到 设计模式的乐趣 避免重复编码 .... 减少劳动量 .. 如果你能在用心静静的体会文章的每个字 , 每段话的意思 , 这样可以避免走很多弯路 ... 我以前学习设计模式的时候 , 就是 因为忽略了原则 , 凭着感觉 , 看着书来学习设计模式 , 结果就是知其然而不知其所以然 .... 如果你是初学设计模式 , 再了解了 OOP 的三大原则 ( 封套 , 继承 多态 ) 之后 , 请反复的结合原则 , 来学习设计模式 .. 这样可以达到事半功倍的效果 ...
  
     设计模式的核心原则是:" - " 原则 (  Open - Closed Principle  缩写 :OCP  ), 一切的一切都是围绕着 " - " 原则展开的 ..
     意思是, 在一个 系统 , 对于扩展是开放的 , 对于修改是关闭的 , 一个好的系统是在不修改源 代码 的情况下, 可以扩展你的功能 .. 而实现开闭原则的关键就是抽象化 .
     在" - " 原则中 , 不允许修改的是抽象的类或者接口 , 允许扩展的是具体的实现类 , 抽象类和接口在 " - " 原则中扮演着极其重要的角色 .. 即要预知可能变化的需求 . 又预见所有可能已知的扩展 .. 所以在这里 " 抽象化 " 是关键 !!!

      可变性的封闭原则: 找到系统的可变因素 , 将它封装起来 .. 这是对 " - " 原则最好的实现 .. 不要把你的可变因素放在多个类中 , 或者散落在程序的各个角落 .. 你应该将可变的因素 , 封套起来 .. 并且切忌不要把所用的可变因素封套在一起 .. 最好的解决办法是 , 分块封套你的可变因素 !! 避免超大类 , 超长类 , 超长 方法 的出现!! 给你的程序增加艺术气息 , 将程序艺术化是我们的目标 !!

      里氏代换原则: 任何基类可以出现的地方 , 子类也可以出现 .. 如果你通读过<Java 编程思想 >, 我想你应该明白这个原则 , 在书中 ,Bruce Eckel  大师用了大量的章节来讲解 " 向上转型 " " 向下转型 ", 我想目的很清楚 , 不仅是要你明白类的型别 , 更重要的是要你明白父类与子类的关系 ..

      依赖倒转原则: 要依赖抽象 , 而不要依赖具体的实现 .. 如 果说开闭原则是目标, 依赖倒转原则是到达 " 开闭 " 原则的手段 .. 如果要达到最好的 " 开闭 " 原则 , 就要尽量的遵守依赖倒转原则 .. 可以说依赖倒转原则是对 抽象化 " 的最好规范 !! 我个人感觉 , 依赖倒转原则也是里氏代换原则的补充 .. 你理解了里氏代换原则 , 再来理解依赖倒转原则应该是很容易的 ..
  合成/ 聚合原则 : 要尽量使用合成 / 聚合原则 , 而不是继承关系达到软件复用的目的 .. 此原则和里氏代换原则氏相辅相成的 , 两者都是具体实现 " - " 原则的规范 .. 违反这一原则 : 就无法实现 " - " 原则 .. 先来看看什么是合成 , 什么是聚合 .

      什么是合成?
     合成: 是指一个整体对依托他而存在的关系 , 例如 : 一个人对他的房子和家具 , 其中他的房子和家具是不能被共享的 , 因为那些东西都是他自己的 .. 并且人没了 这个也关系就没了 .. 这个例子就好像 , 乌鸡百凤丸这个产品 , 它是有乌鸡和上等药材合成而来的一样 .. 也比如网络游戏中的武器装备合成一样 , 多种东西合并为 一种超强的东西一样 ..
      
      什么是聚合?
      聚合: 聚合是比合成关系的一种更强的依赖关系 , 聚合是一个整体对个体的部分 , 例如 , 一个奔驰 S360 汽车 , 对奔驰 S360 引擎 , 奔驰 S360 轮胎的关 系 .. 这些关系就是带有聚合性质的 .. 因为奔驰 S360 引擎和奔驰 S360 轮胎他们只能被奔驰 S360 汽车所用 , 离开了奔驰 S360 汽车 , 它们就失去了存 在的意义 .. 在我们的设计中 , 这样的关系不应该频繁出现 .. 这样会增大设计的耦合度 ..
      明白了合成和聚合关系, 再来理解合成 / 聚合原则应该就清楚了 .. 要避免在系统设计中出现 , 一个类的继承层次超过 3 .. 如果这样的话 , 可以考虑重构你的代码 , 或者重新设计结构 .. 当然最好的办法就是考虑使用合成 / 聚合原则 ...

      迪米特法则: 系统中的类 , 尽量不要与其他类互相作用 , 减少类之间的耦合度 因为在你的系统中 , 扩展的时候 , 你可能需要修改这些类 , 而类与类之间的关系 , 决定了修改的复杂度 , 相互作用越多 , 则修改难度就越大 , 反之 , 如果相互作用的 越小 , 则修改起来的难度就越小 .. 例如 A 类依赖 B , B 类依赖 C , 当你在修改 A 类的时候 , 你要考虑 B 类是否会受到影响 , B 类的影响是否又会影响到 .. 如果此时 C 类再依赖 D 类的话 , 呵呵 , 我想这样的修改有的受了 ..

     接口隔离法则: 这个法则与迪米特法则是相通的 , 迪米特法则是目的, 而接口隔离法则是对迪米特法则的规范 .. 为了做到尽可能小的耦合性 , 我们需要使用接口来规范类 , 用接口来约束类 . 要达到迪米特法则的要求 , 最好就是实现接口隔离法则 , 实现接口隔离法则 , 你也就满足了迪米特法则 ...
    
 
       如果你能看这里, 说明你已经对这些原则了有了感性的认识 .. 这些原则是设计模式的核心 , 如果不能充分理解这些原则 , 是很难理解好设计模式的 ..

      如果第一遍看不懂, 没关系 , 反复揣摩, 细读每个字 , 每句话 .. 对于这些原则, 我也是看了 N*N 遍才明白的 ( 这期间也没任何人指点过我 , 更每人讲的这么细 , 奖励自己一下先 汗啊 ).. 我推荐看完原则之后 , 请看设计模式 , 看两三个模式 , 然后理解一下 , 自己动手把模式实现出来 , 再回头来看原则 , 你会感觉 , 你的模式一定是满足了其 中的某些原则 !! 这是必然的 !! 只要你理解了原则 , 设计模式不难理解 .. 就好比 , 有了内功基础的你 , 再来学习刀 , , 枪这些武器的时候 , 要比那些直接学习 刀 , , 剑的人 , 快很多 , 效果也好很多 ...

 

分享到:
评论

相关推荐

    设计模式入门众多好东西大集合

    《白话设计模式》文档很可能是以通俗易懂的方式介绍设计模式的入门读物。 在软件开发过程中,设计模式可以帮助我们更有效地组织代码,提高代码的可读性和可维护性。设计模式通常分为三类:创建型、结构型和行为型...

    实用教程 java 设计模式 入门教程 思想

    在实践中,设计模式可以提高团队之间的沟通效率,因为大家都遵循一套共同的设计原则和模式,使得代码更容易理解和复用。 总之,Java设计模式是每一位有志于提升编程技艺的开发者必修的课程。通过本入门教程,你将...

    设计模式解析(第二版)

    本书以作者多年来为软件开发人员(包括面向对象技术老兵和新手)讲授模式的经验为基础撰写而成,首先概述了模式的基础知识,以及面向对象分析和设计在当代软件... 设计模式最佳入门图书,2003JOLT大奖读者选择奖得主。

    《设计模式》--- 轻松愉快的设计模式入门书籍

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决问题的优秀实践和可...通过阅读这本书,你可以掌握如何在自己的项目中有效运用设计模式,让代码更符合面向对象设计原则,提高软件的可读性和可维护性。

    设计模式入门之一:深入单例模式

    单例模式是设计模式中最基础且常用的一种,它旨在确保一个类只有一个实例,并提供一个全局访问点。在软件开发中,有些对象只需要一个实例就能满足需求,比如线程池、数据库连接、配置管理等。使用单例模式可以避免...

    24种设计模式介绍与6大设计原则高清入门讲解.7z

    非常适合初学者学习入门的设计模式

    C#设计模式

    全书分为4个部分,首先介绍了C#语言和面向对象程序设计的一般原则,可作为C#程序设计的快速入门教程;然后分别讲述了创建型模式、结构型模式和行为型模式,每一类设计模式又包括若干种具体模式,共有23种。在介绍每...

    C#设计模式随书光盘

    全书分为四个部分,首先介绍了C#语言和面向对象程序设计的一般原则,可作为C#程序设计的快速入门教程;然后分别讲述了创建型模式、结构型模式和行为型模式。每一类设计模式又包括若干种具体模式,共有23种。在介绍每...

    深入浅出设计模式

    面向对象的设计模式经典书籍,讲述了设计原则、创建型模式、行为型模式、结构型模式,非常适合入门学习。

    asp.net设计模式4asp.net设计模式4asp.net设计模式4

    压缩包中的"轻松入门设计模式七 [中转站 -- 迪米特法则]"可能是关于迪米特法则的教程或指南。迪米特法则强调了类与类之间的通信应保持最小化,每个类只应该了解那些必须直接与其交互的类,而不是了解整个系统。这有...

    资料-java设计模式(图解+框架源码分析+实战)

    本课程定位是设计模式的入门课程,但是又聊了一下设计模式在spring中的使用。对于要从事高级工程师及架构师工作,设计模式、数据结构和算法是必须要求灵活运用的,所以这类学生可以从本课程开始学习。

    设计模式迷你手册

    此外,设计模式不仅仅是关于代码,更重要的是它代表了良好的软件设计原则,如开闭原则(对扩展开放,对修改关闭)、依赖倒置原则、单一职责原则等。这些原则是SOLID设计原则的基础,是软件开发中不可或缺的部分。 ...

    深入浅出的设计模式 ptf

    总之,《深入浅出的设计模式》是一本不可多得的设计模式入门教材,无论你是初入编程的新手,还是希望提升自己设计能力的开发者,都能从中受益匪浅。通过学习,你将能更好地理解和解决实际开发中遇到的问题,提升软件...

    Head First 设计模式(中文版)

    千万不要轻视这些原则,因为每个设计模式背后都包含了几个原则的概念。很多时候,在设计时有两难的情况,这时候我们必须回归到原则,以方便判断取舍。可以这么说:原则是我们的目标,而设计模式是我们的做法。 Head...

    HEAD FIRST 设计模式

    2. **面向对象设计原则**:书中会讲解SOLID(单一职责、开闭原则、里氏替换、接口隔离、依赖倒置)等面向对象设计原则,这些原则是理解设计模式的基础。 3. **创建型模式**:包括工厂模式、抽象工厂模式、单例模式...

    ACE_设计模式_网络编程学习资料.zip

    它详细介绍了ACE的架构、设计原则和核心组件,如Acceptor-Connector设计模式、Reactor模式等,有助于读者快速理解和掌握ACE框架。 《C++设计模式.zip》可能包含了一本或多本关于C++设计模式的书籍,设计模式是软件...

    设计模式C++、C#、java(中、英文)免费

    这可能包括智能指针、模板元编程、RAII(Resource Acquisition Is Initialization)原则、move语义等在设计模式中的应用。 5. **设计模式C++版.pdf**: 这个版本专注于C++的设计模式,可能涵盖了C++特有的挑战,如...

    C#设计模式含随书源码

    全书分为四个部分,首先介绍了C#语言和面向对象程序设计的一般原则,可作为C#程序设计的快速入门教程;然后分别讲述了创建型模式、结构型模式和行为型模式。每一类设计模式又包含若干种具体模式,共23种。在介绍妹子...

    C#设计模式 包含源代码

    在IT行业中,设计模式是一种被广泛认可的解决常见编程问题的最佳实践。对于C#开发者来说,理解并熟练应用设计模式是提升代码质量和可维护性的关键。本资源"**C#设计模式 包含源代码**"正是为了帮助开发者深入理解和...

    Head.First设计模式_PDF.part1

    1 欢迎来到设计模式世界:设计模式入门 模拟鸭子应用 Joe想到继承 利用接口如何? 软件开发的不变真理 分开变化和不变部分 设计鸭子的行为 测试鸭子的代码 动态地设置行为 封装行为的大局观 “有一个”比...

Global site tag (gtag.js) - Google Analytics