设计模式原则及分类

一、概念

设计模式:(Design pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。用来提高代码可复用性、可维护性、可读性、稳健性以及安全性。

二、设计模式原则:

  • 单一职责原则(Single Responsibility Principle):一个类应该只有一个发生变化的原因。每个类的功能尽可能的单一,只干一件事情,如果承担的职责太多就需要将类进行拆分。

  • 开闭原则(Open Closed Principle):对扩展开放,对修改关闭。为了使程序的扩展性好,易于维护和升级,在扩展的时候,尽量不要修改原代码,而是要了扩展原代码,比如接口实现。

  • 里氏替换原则(Liskov Substitution Principle):任何基类可以出现的地方,子类一定可以出现。个人理解是基类使用的地方可以用子类替换掉,且不会影响功能。因此该原则还要求:子类对父类的方法尽量不要重写和重载,如果给重写了,运行的时候就破坏了替换原则。

  • 接口隔离原则(Interface Segregation Principle):客户端不应该依赖它不需要的接口,类间的依赖关系应该建立在最小的接口上。每个接口中不存在子类用不到却必须实现的方法,如果不然,就要将接口拆分。使用多个隔离的接口,比使用单个接口(多个接口方法集合到一个的接口)要好。

  • 依赖倒置原则(Dependence Inversion Principle):上层模块不应该依赖底层模块,它们都应该依赖于抽象,抽象不应该依赖于细节,细节应该依赖于抽象。面向接口编程,依赖于抽象而不依赖于具体。写代码时用到具体类时,不与具体类交互,而与具体类的上层接口交互。

上层的意思就是依赖方,例如一个人出远门需要依赖交通工具;

下层就是被依赖方,如交通工具。交通工具包括大巴、火车、飞机、高铁等。

此时如果上层直接依赖底层实体工具,以后新添加一个出行工具就要动上层依赖方代码,此时我们可以给所有下层的交通工具抽象出一个接口vehicl,上层依赖vehicl接口,这样底层代码扩展不会影响上层代码功能。

  • 迪米特法则(最少知道原则)(Law of Demeter):只与你的直接朋友交谈,不跟"陌生人"说话。一个类对自己依赖的类知道的越少越好。无论被依赖的类多么复杂,都应该将逻辑封装在方法的内部,通过public方法提供给外部。这样当被依赖的类变化时,才能最小的影响该类。

记忆要点:SOLID(坚固的),分别是上面前5个单词的首字母。

三、设计模式分类:

  • 创建型模式:创建型设计模式主要解决"对象的创建"问题,共五种:

工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

记忆方法:工厂 里有个孤单建造者 在建圆形大楼。

  • 结构型模式:结构型设计模式主要解决"类或对象的组合或组装"问题,共七种:

适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

记忆方法:代理人 觉得这座外观 不好看,需要再装饰 下,可以加一组圆圆 的桥洞,再上几个桥墩。

  • 行为型模式:行为型设计模式主要解决的就是"类或对象之间的交互"问题,共十一种:

策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

参考文章:
快速记忆23种设计模式
对"依赖倒置原则"的理解

相关推荐
三氧化真3 小时前
设计模式-装饰者模式
java·设计模式
哪吒编程6 小时前
重学设计模式,【结构型】装饰器模式
java·后端·设计模式
帅次12 小时前
基于 Web 的工业设备监测系统:非功能性需求与标准化数据访问机制的架构设计
设计模式·重构·软件工程·软件构建·需求分析·代码规范·设计规范
仙魁XAN14 小时前
Unity 设计模式 之 创建型模式 -【单例模式】【原型模式】 【建造者模式】
unity·单例模式·设计模式·建造者模式·原型模式
工程师老罗18 小时前
Java笔试面试题AI答之设计模式(4)
java·开发语言·设计模式
18你磊哥19 小时前
java重点学习-设计模式
java·学习·设计模式
蔚一1 天前
Java设计模式(单例模式)——单例模式存在的问题(完整详解,附有代码+案例)
java·开发语言·单例模式·设计模式
严文文-Chris1 天前
【设计模式-备忘录】
java·设计模式
岁岁岁平安1 天前
《飞机大战游戏》实训项目(Java GUI实现)(设计模式)(简易)
后端·游戏·设计模式·飞机大战·java-gui
丶白泽1 天前
重修设计模式-结构型-适配器模式
前端·设计模式·适配器模式