设计模式基础知识

一、说明

  • 本文是在学习设计模式时整理的,用于学习交流只用,如有错误或不严谨的地方,欢迎在评论区指正。
  • 设计模式详细学习,可以参见《设计模式之禅》

二、什么是设计模式

  • 设计模式,它是一套理论,由软件界的先辈们总结出的一套可以反复使用的经验,它可以提高代码的可重用性,增强系统的可维护性,以及解决一系列复杂问题。

三、设计基础

1、名词解释

  • 设计模式:软件设计模式是对各种面向对象方法的一种总结。前辈们遇到了好多设计问题,然后利用面向对象解决了。然后他们把解决方案汇总起来,形成了23多种设计模式。它可以有效的帮助我们利用面向对象,来提高代码的复用性、扩展性等。 设计模式包含4个关键元素:
    • 模式名称:就是设计模式的名字。
    • 问题:就是当面对什么样的设计问题时,应该采用该设计模式。即该设计模式的应用场景
    • 解决方案:该设计模式是使用什么样的方案解决的。
    • 效果:最后解决后,效果怎么样。比如扩展性怎么样,复用性怎么样。优缺点等等
  • 组合:将多个种类的对象组合成一个新的对象。如 显示器 + 键盘 + 鼠标 +主机 = 电脑。
  • 聚合:将多个同种对象聚起来,形成一个新的对象,如 50个学生 = 一个班级
  • 用户:在设计模式中,用户并不是指具体使用系统的用户,而是使用你代码,或者是扩展你代码的其他程序员。

2、UML基础

UML主要用于表示类与类之间的关系。例如:
在这里插入图片描述
如图,在该图中
在这里插入图片描述
该图表示类,其中 Rectangle为类名。 length:double为 属性:类型。getArea():double 为 方法:返回值
圆圈代表接口,getArea():double为该接口的方法
虚线箭头表示实现,用于表示类实现了这个接口。
如果为实线,则为继承
在这里插入图片描述
这个表示依赖。可以简单的理解为左边的类用到了右边的类。
在这里插入图片描述
这个是聚合,如果这个菱形为实心的,则为组合

四、6大设计原则

1、单一职责原则(Principle of single responsibility)

  • 原则思想:一个方法只负责一件事情。
  • 描述:单一职责原则很简单,一个方法 一个类只负责一个职责,各个职责的程序改动,不影响其
    它程序。 这是常识,几乎所有程序员都会遵循这个原则。
  • 优点:降低类和类的耦合,提高可读性,增加可维护性和可拓展性,降低可变性的风险。

2、里氏替换原则(Liskov Substitution Principle)

  • 原则思想:使用的基类可以在任何地方使用继承的子类,完美的替换基类。
  • 大概意思是:子类可以扩展父类的功能,但不能改变父类原有的功能。子类可以实现父类的抽象方
    法,但不能覆盖父类的非抽象方法,子类中可以增加自己特有的方法。
  • 优点:增加程序的健壮性,即使增加了子类,原有的子类还可以继续运行,互不影响。

3、依赖倒置原则(Dependence Inversion Principle)

  • 依赖倒置原则的核心思想是面向接口编程.
  • 依赖倒转原则要求我们在程序代码中传递参数时或在关联关系中,尽量引用层次高的抽象层类,
  • 这个是开放封闭原则的基础,具体内容是:对接口编程,依赖于抽象而不依赖于具体。

4、接口隔离原则(Interface Segregation Principle)

  • 这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的
    意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级
    和维护方便。所以上文中多次出现:降低依赖,降低耦合。
  • 例如:支付类的接口和订单类的接口,需要把这俩个类别的接口变成俩个隔离的接口

5、迪米特原则(最少知道原则)(Demeter Principle)

  • 原则思想:一个对象应当对其他对象有尽可能少地了解,简称类间解耦
  • 大概意思就是一个类尽量减少自己对其他对象的依赖,原则是低耦合,高内聚,只有使各个模块之
    间的耦合尽量的低,才能提高代码的复用率。
  • 优点:低耦合,高内聚。

6、开闭原则(Open Close Principle)

  • 原则思想:尽量通过扩展软件实体来解决需求变化,而不是通过修改已有的代码来完成变化
  • 描述:一个软件产品在生命周期内,都会发生变化,既然变化是一个既定的事实,我们就应该在设
    计的时候尽量适应这些变化,以提高项目的稳定性和灵活性。
  • 优点:单一原则告诉我们,每个类都有自己负责的职责,里氏替换原则不能破坏继承关系的体系。

五、设计模式分类

在这里插入图片描述

六、创建型模式

  • 单例模式(Singleton Pattern)
  • 工厂方法模式(Factory Method Pattern)
  • 抽象工厂方法模式(Abstract Factory Pattern)
  • 建造者模式(Builder Pattern)
  • 原型模式(Prototype Pattern)

七、结构型模式

  • 适配器模式(Adapter Pattern)
  • 组合模式(Composite Pattern)
  • 代理模式(Proxy Pattern)
  • 桥梁(桥接)模式(Bridge Pattern)
  • 装饰模式(Decorator Pattern)
  • 门面(外观)模式(Facade Pattern)
  • 享元模式(Flyweight Pattern)

八、行为型模式

  • 迭代器模式(Iterator Pattern)
  • 命令模式(Command Pattern)
  • 解释器模式(Interpreter Pattern)
  • 责任链模式(Chain of Responsibility)
  • 观察者模式(Observer Pattern)
  • 中介者模式(Mediator Pattern)
  • 备忘录模式(Memento Pattern)
  • 状态模式(State Pattern)
  • 策略模式(Strategy Pattern)
  • 模板方法模式(Template Method Pattern)
  • 访问者模式(Visitor Pattern)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaofanfan2015

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值