Java23种设计模式总结-学而不习则罔

冰冻三尺,非一日之寒

经常说到Java的设计模式,今天做个总结和分享,以便学习。
设计模式并没有用到新的任何关于Java的新知识点,无非就是大佬们在根据Java语言特性的基础上,根据一定的设计原则,结合具体业务场景,在长期的实践中总结出来的经验或者说是套路。合适的业务员场景选择合适的设计模式,能使我们开发人员的编码设计出代码复用性高,封装性高,易于维护和拓展的弹性系统。有些设计模式比较相似,比如包装模式和代理模式、工厂模式和建造者模式,严格来说它们之间没有严格的界限,所用的原则是相通的,一种设计模式适当改动、变化可能就是另一种设计模式,它们都是按照设计原则的具体体现。我理解设计模式的精髓不在于如何掌握了固定了套路,而是能够结合具体的业务场景将某种设计模式具体化。
先介绍下 面向对象 的设计原则:

  1. 单一职责原则(Single Responsibility Principle)
  2. 开闭原则(Open Close Principle)
  3. 里氏替代原则(Liskov Substitution Principle)
  4. 依赖倒置原则(Dependence Inversion Principle)
  5. 接口分离原则(Interface Segregation Principle)
  6. 迪米特原则(Law Of Demeter)

单一职责原则,很容易理解,一个类或者接口不要承担太多的功能,只承担一种职责。比如Teacher只承担教书功能,而Student的职责就是学习,如果定义了一个类既有教书的行为,也有学习的功能,看起来就很奇怪,也不符合Java面向对象设计原则的特性。

开闭原则,就是说在软件系统中,对拓展开放,对修改关闭。

里氏替代原则,一句话,父类所在的地方可以用子类来替代。通过Java的继承,子类可以获取父类非私有的属性和方法,那么使用父类的地方,理论上它的子类也同样使用。

依赖倒置原则,程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。

接口分离原则,通过接口去隔离不同的业务场景或功能,建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。和单一职责原则的区别是,单一职责原则是从业务上去划分的,注重的是接口的职责单一,而接口分离原则是要求接口的方法尽量少,是从接口设计上考虑的。

迪米特原则,又叫最小知识原则,就是说一个对象应当对其他对象有尽可能少的了解。迪米特法则可以简单说成:talk only to your immediate friends,只和你的直接朋友交谈。对于面向对象而言,可以理解为一个实体对象尽可能与其他实体对象相互联系,如果是必要的联系,只和自己最直接的关系的对象联系。

再谈下设计模式,共有23种,分类如下
创新型模式,共5种:工厂方法模式、抽象工厂模式、建造者模式、单例模式、原型模式
结构型模式,共7种:适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、享元模式
行为型模式,共11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

常用的设计模式有工厂方法模式、抽象工厂模式、建造者模式、适配器模式、装饰者模式、代理模式、策略模式、模板方法模式、观察者模式。
后续有时间再做详细介绍。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值