设计模式概念、分类和原则

  • 设计模式的概念
    • 设计模式是针对面向对象设计中常见问题的标准化、可复用的解决方案模板,它们是基于经验和原则的抽象指导,旨在提升代码质量和软件开发效率。通过恰当运用这些模式,Java开发者可以构建更为健壮、灵活和易于维护的软件系统。
  • 设计模式的分类
    • 创建型模式(关注对象的创建过程,旨在将对象的创建和使用分离)
      • 单例模式
      • 工厂方法模式
      • 抽象工厂模式
      • 建造者模式
      • 原型模式
    • 结构型模式(关注如何组合对象以形成更大的结构,简化系统结构)
      • 适配器模式
      • 装饰器模式
      • 代理模式
      • 桥接模式
      • 组合模式
      • 享元模式
      • 外观模式
    • 行为型模式(关注对象之间的责任分配,算法封装以及对象间的通信。)
      • 策略模式
      • 命令模式
      • 观察者模式
      • 迭代器模式
      • 模板方法模式
      • 访问者模式
      • 中介者模式
      • 职责链模式
      • 状态模式
      • 备忘录模式
      • 解释器模式
  • 设计原则
    • 单一职责
      • 一个类,应当只有一个引起它变化的原因(There should never be more than one reason for a class to change.原文),即一个类应该只有一个职责。一个类的职责越多,在调用这个类的时候,就越难以拆分,进而导致程序难以扩展。当然并不是强制要求每一个类都只能有一个方法,而是要求每个类的所有方法都尽可能为某一种职责服务,比如一个MP3类,可以有开机、关机、播放音乐等方法,从职责的角度类的功能是单一的,此时如果需要上传下载音乐的功能,就超出了MP3的职责范围,就应该定义一个类专门提供上传下载功能。
    • 里氏替换
      • 子类必须能够替换其基类出现在任何合理的情况下,而不影响程序的正确性。简单举个例子,如果一个Dog类的对象在程序中调用一个方法,那么我们把这个对象替换成Dog类的任意一个子类的对象,程序都不应该出现任何异常或错误。
    • 依赖倒置
      • 高层模块不应该依赖低层模块(可以理解为父类和子类)
      • 两者都应该依赖于抽象(接口或抽象类)
      • 抽象不应该依赖细节(接口或抽象类中要避免引入实现类的特定方法或属性)
      • 细节应该依赖抽象(不论实现类怎么实现逻辑,都应该可以通过抽象类或接口与其他模块进行交互)
    • 接口隔离
      • 一个接口(Interface)代表一个角色,不应该将不同的角色交给同一个接口。比如一个接口具备买菜的方法和开车的方法,那么实现类在实现接口的时候,就不可避免地要实现一个不需要的方法。这个时候两个分别具有买菜和开车方法的接口,就比上述的一个接口的设计要好。
    • 迪米特法则
      • 一个对象要对其它对象有最少的了解,只与直接的“朋友”通信,不与陌生对象打交道。这里的朋友包括对象本身、对象的属性对象、对象的方法参数、对象方法的返回值、对象方法内部创建的对象。除直接朋友之外,对于对象来说都是陌生的。这样做的好处是可以防止一个类有过多的职责,或者与过多的类耦合。
    • 开闭原则
      • 一个软件实体应当对扩展开放,对修改关闭。
      • 面向对象编程中,开闭原则是最基础的原则,起到总的指导作用,其他原则都是开闭原则的具体形态,即其他原则都是开闭原则的手段和工具。

大家如果需要视频版本的讲解,可以关注下我的B站:

一、设计模式之概念、分类和原则

  • 12
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值