Java设计模式-1、开篇

设计模式的使用,就是为了设计高质量代码并业务实现,那么常见的设计模式有哪些原则?

常⽤的⾯向对象设计原则包括7个,这些原则并不是孤⽴存在的,它们相互 依赖,相互补充。

一、设计原则

1. 单一职责原则

特点: 对于一个类而言,应该仅有一个引起它变化的原因。换个通俗的语言来说,就是一个类只做自己的分内之事。

总结: ⼀个类只负责⼀个功能领域中的相应职责

2. 开放封闭原则

特点:这个原则其实有两个特征,对扩展开放,对更改封闭的。

所以在程序中对于程序的设计要思考清楚,如果每次增加新功能都需要去修改原有的代码,那么便不符合,开放封闭原则。在程序中有新功能就新增代码,而不是修改原有的代码。这就是开放封闭的灵魂。

开放封闭原则的优点:

  1. 可维护
  2. 可扩展
  3. 可复用
  4. 灵活性好

总结: 对扩展开放,对修改关闭。

3. 依赖倒置原则

抽象不应该依赖细节,细节依赖于抽象。换做通俗的话来说就是面向接口编程。

依赖倒置原则:
3.1.高层模块不应该依赖于低层模块。两个都要依赖于抽象。

3.2.抽象不应该依赖于细节,细节依赖于抽象。
简单来说,就是你高层的代码,不应该依赖于地层的代码。应该依赖抽象接口或者类。不管需求怎么改。我们只需要修改具体的实现细节就行了。这就好比修电脑,内存条坏了换内存条就行,不应该说是把主板也换了。
总结: 依赖于抽象,不能依赖于具体实现。

4. 里式代换原则

特点:子类型必须能够完全替代父类型。父类有A方法功能,子类也有A方法功能,但是子类可以扩展自己的功能。

这时候我们再来看看依赖倒置,不管是高层还是低层都依赖于抽象。看完这个应该更能理解依赖倒置原则了吧。如果代码不符合里式代换原则那么依赖倒置也是白谈了。所以依赖倒置大家谁都不依赖谁,除了约定接口外,自由发挥。

总结:所有引⽤基类的地⽅必须能透明地使⽤其⼦类的对象

5. 合成复用原则

这个原则的本质就是不要过多的依赖继承,尽量使用合成(合成是一种强强拥有关系,表示部门与整体之间的关系。)或者聚合(聚合是一种弱拥有关系,可以这么理解就是a对象可以包含B对象但是b对象不a对象的一部分。)

打破只有依赖的逻辑,增加组合的逻辑,个人觉得有点像微服务的思想,修改近少的修改整体服务,局部修改。

总结: 尽量使⽤合成/聚合,⽽不是通过继承达到复⽤的⽬的。

6.迪米特原则

强调类之间松耦合,类之间关联越小越利于复用,一个弱耦合的类被修改,也不会对别的类造成波及。

总结: ⼀个软件实体应当尽可能少的与其他实体发⽣相互作⽤ 。

7. 接口隔离原则

使用多个隔离的接口,比使用单个接口(多个接口方法集合到一个的接口)要好。

总结: 类之间的依赖关系应该建⽴在最⼩的接⼝上 

二、什么是设计模式?

          设计模式(Design pattern)代表了最佳的实践,通常被有经验的⾯向对象 的软件开发⼈员所采⽤。设计模式是软件开发⼈员在软件开发过程中⾯临 的⼀般问题的解决⽅案。这些解决⽅案是众多软件开发⼈员经过相当⻓的 ⼀段时间的试验和错误总结出来的。 设计模式是⼀套被反复使⽤的、多数⼈知晓的、经过分类编⽬的、代码设 计经验的总结。使⽤设计模式是为了重⽤代码、让代码更容易被他⼈理 解、保证代码可靠性。 毫⽆疑问,设计模式于⼰于他⼈于系统都是多赢 的,           

           设计模式使代码编制真正⼯程化,设计模式是软件⼯程的基⽯,如同 ⼤厦的⼀块块砖⽯⼀样。项⽬中合理地运⽤设计模式可以完美地解决很多 问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了 ⼀个在我们周围不断重复发⽣的问题,以及该问题的核⼼解决⽅案,这也 是设计模式能被⼴泛应⽤的原因。

三、设计模式的分类

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值