二十三种设计模式第一篇-设计模式的原则和分类
  cEe6YWJIAuf2 2023年11月05日 42 0


怎么说,其实我挺讨厌设计模式的,但是不得不说,这东西解决问题确实有一手,并且设计模式确实规范了我们在开发中的代码,并且我们可以使用这二十三种设计模式解决我们碰到的业务问题,并且我们学的框架里边多多少少使用了设计模式。
我作为刚刚进入门槛的小白,还尚未是一个合格的程序员,老实说,我真的讨厌这个设计模式,但是软件设计师考试,找工作面试,看框架底层源码都有他的影子,没办法,为了我自己的程序员生涯,我又不得不去学,事先说明,博主很菜,写的文档也不一定很准确,但是我还是会认真的写好这几篇关于设计模式的文章的。

没办法,人总的向前看(当然要学会偷一点懒),好了废话就说到这里,有兴趣就看,没兴趣当做博主在这里记录笔记就行了。

设计模式的6大准则:

讲设计模式之前,我们需要软件开发的6大准则:
我先背一下:

  1. 迪米特原则
  2. 开闭原则
  3. 里氏替换原则
  4. 单一职责
  5. 依赖倒置原则
  6. 接口隔离原则

嗯,没错,就是这几大准则,原则准则,我也懒得管了。

迪米特原则(Law of Demeter,LoD)

一个对象应该对其他对象有最少的了解。也就是说,一个对象应该对自己需要的对象和方法尽可能少的了解,只与直接的朋友通信。直接的朋友是指出现在成员变量、方法输入、输出参数中的类。这样可以降低对象之间的耦合度。

开放封闭原则(Open-Closed Principle,OCP)

开放封闭原则(Open-Closed Principle,OCP):一个软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。在不修改原有代码的情况下,可以通过扩展来增加新的功能。

里氏替换原则(Liskov Substitution Principle,LSP)

里氏替换原则(Liskov Substitution Principle,LSP):子类必须能够替换掉它们的父类,而不影响程序的正确性。也就是说,继承关系中父类能出现的地方子类都可以出现。

单一职责原则(Single Responsibility Principle,SRP)

单一职责原则(Single Responsibility Principle,SRP):一个类只负责一个功能领域中的一种职责,即一个类只有一个引起它变化的原因。这样可以使类更加内聚,降低代码的耦合度。

依赖倒置原则(Dependency Inversion Principle,DIP)

依赖倒置原则(Dependency Inversion Principle,DIP):高层模块不应该依赖于底层模块,两者都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。

接口隔离原则(Interface Segregation Principle,ISP)

接口隔离原则(Interface Segregation Principle,ISP):一个类对另一个类的依赖应该建立在最小的接口上。应该尽量避免一个类依赖于它不需要的接口。

===============================================
这六大原则是我们了解设计模式的基础,需要了解加记忆,我相信只要你理解一下就很容易掌握的,毕竟确实也不是很难记,这个面试常问,我觉得这样的题应该算是送分题,但是面试官可能会让你举例说明,这样就不一样了。

设计模式的类型:

创建型模式共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式,原型模式。(工单建原)

结构性模式共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。(适装外代享组桥)

行为型模式共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。(策模观迭责命备,状访中解)

二十三种设计模式第一篇-设计模式的原则和分类_ci


我给一张图放置这里,不要小瞧这张图,软件设计师中,靠这张图,你可以提高好几分。

本篇到此结束,下篇将使用图片和代码的形式进行设计模式正片。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  2Vtxr3XfwhHq   2024年05月17日   55   0   0 Java
  Tnh5bgG19sRf   2024年05月20日   110   0   0 Java
  8s1LUHPryisj   2024年05月17日   46   0   0 Java
  aRSRdgycpgWt   2024年05月17日   47   0   0 Java
cEe6YWJIAuf2