设计模式概述

设计模式概述:

    设计模式是GoF(gang of four)提出来的。设计模式是程序员们经过大量的实践总结出来的设计模板。目的是要提高代码的复用性,扩展性,可读性。

一、类之间的关系

    1、依赖关系

    关系很弱,偶然性,临时性的,常用的场景是A类的方法参数需要使用到B类。

    2、关联关系

    关联关系是一种强依赖关系。关联关系是长期的,平等的。分类有单向关联,双向关联,自关联。

    3、聚合关系

    聚合关系是关联关系的一种特例。体现的是整体和部分的关系。整体和部分可以相互相互分离有着自己的生命周期。

    4、组合关系

    组合关系体现是A contains B,关系比聚合强,也称为强聚合关系。

    5、继承关系

    6、实现关系(接口)

二、六大原则 –>开闭原则是目标,里氏原则是基础,依赖倒转原则是手段

    1、Single Responsibility Principle 单一职责原则

这个原则用来控制类粒度的大小,是高内聚低耦合的指导方针,要求类不能承担过多的职责。一个类承担的职责越多,耦合性就会越高。当该类发生变化时,影响很多其他的类。所以要将这些职责分离。但是分离的太多,会使得类过多,不容易管理。所以要看程序员的经验。

    2、Interface Segaregation Principle 接口隔离原则

这个原则和单一职责原则有点类似,单一职责原则针对的是类的粒度客人接口隔离原则针对的是接口的粒度。

一个接口定义一个规范,如果规范定义的范围太广,我们需要将他分割成更小的接口。接口也不能分的过细。

    3、open closed principle 开闭原则 最重要 设计目标

    该原则是Bertrand Meyer1988年提出的要求设计类时对扩展开放,对修改关闭。当类创建好了以后,我们尽量不要去修改,而是用增加类的方式去代替修改。所以抽象化是开闭原则的关键。这要求我们要降低类之间的耦合,所谓的解耦。当并不代表类之间没有关系。如果一个项目种的类都没有关系了,那就不是一个程序了。由关系,但是关系要解耦、封装。

    4、Liskov Substitution Principle 里氏替换原则 –>多态

该原则是Barbara Liskov和Jeannette Wing 在1994年提出。且2008年于Barbara Liskov女士获得了图灵奖。该原则是实现开闭原则的重要方式之一;

多态是里氏的一个应用,Java在编译期,会检查一个程序是否符合里氏替换原则。

该原则的含义为在程序中使用的是父类对象,那么将父类用子类替换调,程序不会包任何错误和异常,反过来不成立,若果程序中使用的是子类对象,不一定能使用父类对象。

应用场景:方法传参时,参数类型时父类,我们可以传入子类。但是如果参数类型时子类,不能传入父类。

程序中尽量使用基类(接口)定义,运行时确定子类类型,替换父类对象。

5、Dependence Inversion Principle 依赖倒转原则

该原则是1996年由Robert.C.Martin提出。抽象不依赖于细节,细节依赖抽象。即面向抽象类/接口编程,不是针对具体子类和实现类编程。

    通过该原则我们在子类中定义的方法应该尽量和抽象类保持一致,而不要给出多余的方法,因为抽象类无法调用。

    实现依赖倒转原则,我们要针对抽象类和接口编程,将具体的对象注入到其他依赖关系的类中(依赖注入)Dependency Injection(DI)常用的注入方式由三种:构造注入,settter注入,接口注入。

构造注入和Setter注入是指在类中定义抽象类/接口类型的属性。然后通过构造方法和Setter方法传入具体的子类/实现类。而接口注入是在方法形参方法形参,返回值尽量使用父类/接口,在方法调用时传入具体的实现类/子类。

    6、Law of Demeter 迪米特原则

迪米特原则又称为最少知识原则(Least Knowledge Principle)。一个实体应该尽少的和其他实体发生关系。这样当我们去修改一个模块的时候就会修改很少的其他模块,扩展会更容易。这样迪米特法则就可以降低系统的耦合度,使得类和类之间保持松散的耦合关系。但是一个应用中不存在类和类的耦合度都是0的情况,如果是这样,程序就废了。

    迪米特法则要求只和你的直接朋友通讯,不要和陌生人说话。对于一个对象,他的直接朋友为:

    1)、当前对象本身 this

    2)、当前对象所创建的对象

    3)、当前对象的成员对象

    4)、以参数形式传入当前对象的对象

    5)、当前对象是一个集合,集合中的对象元素都是朋友

除了以上的都是陌生人。如果一定要和陌生人说话,那可以通过第三者来传达(代理)。

三、设计模式分类

    设计模式分为创建型、结构型、行为型

1、创建型

    单例模式 Singleton

    工厂三姐妹:简单工厂、工厂方法、抽象工厂模式

            简单工厂模式 SimpleFactory

            工厂方法模式 Factory Method

            抽象工厂模式 Abstract Factory

    建造者模式Builder

            链式调用

    原型模式 Prototype

2、结构型

    外观模式 Facade

    适配器模式Adaper


    桥接模式Bridge

    组合模式 Composite

    代理模式 Proxy

    装饰器模式Decorater

    享元模式FlyWeight

3、行为型


    策略模式 Strategy

    观察者模式 Observer

    模板模式 Template Method

    责任链模式 Chain of Responsibility

    迭代器模式 Iterator

    命令模式 Command

    状态模式 State

    备忘录模式 Memento

    访问者模式

    中介者模式

    解释器模式


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