定义设计模式

模式是在某种情境(context)下,针对某问题的某种解决方案

情景:就是应用某个设计模式的场景。

问题:该情景遇到的问题。

解决方案:找到适合的设计模式。

模式使用功能描述

装饰者:包装一个对象,以提供新的行为。
状态:封装了基于状态的行为,并使用委托在行为之间切换。
迭代器:在对象的集合之间游走,而不是暴露集合的实现。
外观:简化一群类的接口。
策略:封装可以互换的行为。
代理:包装对象,以控制对此对象的访问。
工厂方法:由子类觉得要创建的具体类是哪一个。
适配器:封装对象,并不提供不同的接口。
观察者:让对象能在状态改变时被通知。
模板方法:由子类决定如何实现一个算法中的步骤。
组合:客户用一致的方式处理对象集合和单个对象。
单例:确保有且只有一个模式被创建。
抽象工厂:允许客户创建对象的家族,而无需指定他们的具体类。
命令:封装请求成为对象。

设计模式类目

创建型

  • 单例
  • 建造者
  • 抽象工厂
  • 工厂方法

    行为型

  • 模板方法

  • 命令
  • 迭代器
  • 观察者
  • 策略
  • 状态
  • 责任链

    结构型

  • 代理

  • 组合
  • 装饰者
  • 适配器
  • 门面

什么时候用设计模式

当你遇到某一个场景,你应该想想或者翻下设计模式,看看你的场景是可以用哪种设计模式解决的。但是无论怎么解决,简单才是王道,别为了用设计模式而用设计模式

不能过度的使用,初学者或者刚刚学完设计模式的人,很容易犯这个错误,一碰到某个问题就想套用设计模式,这样很容易导致代码过度设计,复杂,工程化,应该简单为主,或者重构时考虑设计模式。

建议

看优秀的代码,最好的方式是看自己公司的代码,结合这个业务场景为什么要用这种写法,优缺点是什么都思考一下,结合业务是最好的方式了。

如果觉得公司的代码写的不好🐶,那么看框架源码吧!Spring、Mybatis、Dubbo 都很优秀的!

并非一下子就能学会,还是要多看优秀的作品,多思考,大神也是这样过来的,要比别人优秀就要多花时间!!!共勉!💪💪💪