设计模式总结之一三五

引言

     什么是设计模式(What)?

       设计模式是前人实际经验的积累和总结,都是着重解决实际的问题。

       学习设计模式的目的(Why)?

       通过学习设计模式来提高写出的代码的可维护性、可复用性、可扩展性和灵活性。也就是说让系统能够达到“高内聚、低耦合”的状态。

       怎样学习设计模式(How)?

       设计模式是前人的实践经验总结出来的,六大设计原则,23种设计模式;虽然每种模式都有固定的实现方式,但是设计的原则是活的,所以在学习设计模式的过程中要有所思、有所想、有所悟,有良好的理论基础,这样我们在实际运用中才能得心应手。

 

       下面来说说设计模式的一、三、五:

   

设计模式之一

   一抽象:

        抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。例如苹果、香蕉、生梨、桃子等,它们共同的特性就是水果。得出水果概念的过程,就是一个抽象的过程。抽象化的目的是为了使复杂度降低。设计模式是面向对象编程,而面向对象编程的基础就是类的抽象化。所以要想学好设计模式,就要学好面向抽象编程的思想。

    

  一法则:

    迪米特法则

    迪米特法则(Law of Demeter)又叫作最少知识原则(LKP,Least Knowledge Principle),就是说一个对象应当对其他对象有尽可能少的了解,类与类之间的了解的越多,关系越密切,耦合度越大,当一个类发生改变时,另一个类也可能发生变化。

    核心思想:最少依赖

    具体介绍:设计模式六大原则——迪米特法则(LOD)

设计模式之三

 三大特性

    1、封装

    把事物的状态和行为的实现细节封装在类中,形成一个可以重复使用的“零件”,被成千上万对其内部毫不知情的工作人员使用。

    2、继承

    “Is-a”的的关系,表示一个类是另一个类的特殊种类。

    3、多态

    不同的对象可以执行相同的动作,但要通过它们自己的实现代码来执行。

 三大类别

    1、创建型模式

    处理对象的创建过程。创建型模式将类的实例是如何被创建和放在一起的这些关于具体类的的信息封装起来,创建一个公用的“零件”,也就是接口,来和外部链接,这样减少了类与类之间的紧密程度,内部完整——高内聚,与外部的连接灵活——低耦合。

    例:创建一个抽象的动物类,只知道动物类是有生命的个体,都可以进行新陈代谢和繁殖。

    2、结构型模式

    用来处理类或者对象的组合。就是描述类和对象之间怎样组织起来形成大的结构,从而实现新的功能。

    例:创建型创建了一个抽象的动物类,那么结构型模式就是对这个类进行修饰加工,加上强健的四肢,如:狮子,加上翅膀:如鹰,加上鳃:如鲤鱼。

  
 3、行为型模式

 用来对类或者对象怎样交互和怎样分配职责进行描述。

 例:结构型模式对创建的类进行了修饰加工,而行为型模式则是赋予被修饰后的类一些特性,例:对狮子的四肢进行合理设计,从而让狮子能够在陆地上风驰电掣;对鹰的翅膀进行合理设计,让鹰能够翱翔九天;对鱼的鳃进行合理设计,让鲤鱼能够畅游海底。

  23中设计模式的具体分类:

  

 

设计模式之五

 五大原则 

       1、开放-闭合原则

  软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。意思就是在一个系统中,增加程序的功能时,不应该改动原有代码,只要增加新的代码即可;开闭原则是核心原则,一切的一切都围绕开闭原则展开的。

  具体介绍:设计模式六大原则——开放-闭合原则(OCP)

       2、依赖倒置原则

  细节是多变的,而抽象是相对稳定的。所以我们编程的时候要注重抽象的编程,而非细节编程。如果说开闭原则是目标,依赖倒转原则是到达"开闭"原则的手段。

  具体介绍:设计模式六大原则——依赖倒置原则(DIP)

         3、里氏代换原则

  子类型必须能够替换掉他们的父类型。限制变化影响的范围。

  具体介绍:设计模式六大原则——里氏代换原则(LSP)

       4、合成/聚合复用原则

  要尽量使用合成和聚合,尽量不要使用继承。

  具体介绍:设计模式六大原则——合成/聚合复用原则(CARP)

   里氏代换原则和合成/聚合复用原则都是对开放闭合原则使用时的规范。

        5、单一职责原则

   就一个类而言,应该仅有一个引起它变化的原因。通俗的说,一个类只负责一项职责。

   具体介绍:设计模式六大原则——单一职责原则(SRP)

  五大关系

  在设计模式中涉及的五种关系:依赖、关联(聚合、组合)、实现、继承,用设计模式中一张经典的图来作解释:

总结

学习设计模式的基础就是理解设计原则,我们学的所有的设计模式都离不开设计原则,都是按照一定的设计原则进行的,所以设计原则是一定要掌握的,无论你在实际项目中是否应用了设计模式,设计原则是一定要遵守的编程准则。

  

      

       

        

     

时间: 2024-09-14 11:58:05

设计模式总结之一三五的相关文章

Android UI设计的幻灯片:新的UI设计模式

文章描述:谷歌Android UI设计技巧:新的UI设计模式. 本系列文章原是Android的官方开发者博客的一份Android UI设计的幻灯片,51CTO的译者将这份教程5部分进行翻译整理,希望对Android开发者能有帮助.本文为<谷歌Android UI设计技巧>第四部分:新的UI设计模式. 本文为<谷歌Android UI设计技巧>第四部分:新的UI设计模式. [1] [2]  下一页

您的设计模式,我们的设计模式 java设计模式

http://download.csdn.net/download/yangxin00000000/3212729   您的设计模式,我们的设计模式 java设计模式

[Head First设计模式]云南米线馆中的设计模式——模版方法模式

系列文章 [Head First设计模式]山西面馆中的设计模式--装饰者模式 [Head First设计模式]山西面馆中的设计模式--观察者模式 [Head First设计模式]山西面馆中的设计模式--建造者模式 [Head First设计模式]饺子馆(冬至)中的设计模式--工厂模式 [Head First设计模式]一个人的平安夜--单例模式 [Head First设计模式]抢票中的设计模式--代理模式 [Head First设计模式]面向对象的3特征5原则 [Head First设计模式]鸭子

[设计模式实践之路](1)单例模式

[简介] 单例模式(Singleton)保证一个类仅有一个实例,并提供一个访问它的全局访问点.      实现单例模式的一个最好的方法就是让类自身负责保存它的唯一实例.这个类可以保证没有其他实例可以创建,并且它可以提供一个访问该实例的方法. [特点] 单例模式具有一下特点: 单例类只有一个实例 单例类必须自己创建自己的唯一实例 单例类必须给所有其他对象提供这一实例 [分类] 主要的就是懒汉单例,饿汉单例 [懒汉单例] package Mode; /** * Java设计模式之单例模式 * @au

设计模式[1]-Memento

开始研究设计模式.一个非常perfect的设计模式示意图http://www.mcdonaldland.info/2007/11/28/40/ Type: Behavioral Memento:模式在不破坏封装性的情况下,捕获一个对象的内部状态传递到外部,使得稍后可以将该对象恢复到这个状态.代码参考了http://www.cppblog.com/converse/archive/2006/08/09/11063.html #include <iostream> #include <str

设计模式之观察者模式(关于OC中的KVO\KVC\NSNotification)

学习了这么久的设计模式方面的知识,最大的感触就是,设计模式不能脱离语言特性.近段时间所看的两本书籍,<大话设计模式>里面的代码是C#写的,有一些设计模式实现起来也是采用了C#的语言特性(C#的API,抽象类,在OC中是没有抽象类.没有多继承关系),<设计模式之禅>里面的代码是JAVA写的,与OC差距也是比较大. 但是我想,这些都不是问题,学习设计模式主要学习的是其中的思想,并将之改造成自己所熟悉语言的模式,大同小异.所需要注意的是,在学习的过程中,将之与语言结合起来,多思考.多实践

关于23种设计模式的有趣见解(转载)

好东西不得不转 在网上看见了这篇文章,作者以轻松的语言比喻了java的32种模式,有很好的启发作用. 创建型模式 1.FACTORY-追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说"来四个鸡翅"就行了.麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开.消费者任何时候需要某种产品,只需向工厂请求即可.消费者无须修改就可以接纳新产品.缺点是当产品修改时,工厂类也要做相应的修改.如:

工厂设计模式 Factory

Factory 主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类. 例如:汽车销售商场 该模式将创建对象的过程放在了一个静态方法中来实现.在实际编程中,如果需要大量的创建对象,该模式是比较理想的. public class Demo1 { public static void main(String[] args) { System.out.println("买宝马"); Car bmw = CarFactory("BMW"); bmw.run(

《设计模式》学习笔记2——简单工厂模式

定义 简单工厂模式并不属于GoF(Gang of Four四人组)23中设计模式,有些地方的解释说因为简单工厂模式太简单,所以23中设计模式就没有单独列出. 但是简单工厂模式在实际的应用中却很常用,因此在刘伟老师的<设计模式>一书中就还是列了出来. 简单工厂模式引用书中的定义如下: 简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类.因为在简单工厂模式中用于创建实例的方法是静态(static)方法