了解这些设计模式,出去忽悠忽悠人不好嘛~

前言

咳咳,鉴于我也是个工作不久的小白猿,也是为了学习和对设计模式更好的使用,参考部分资源,整理了这一份文章。码神们不喜勿喷呦~

正文

写文章之前,花了小小的时间画了个脑图,介绍每一个模式是干嘛用的,具体实现,还希望各位多多动手牢记在心,应用到自己参与的项目之中。
在这里插入图片描述
从这个脑图大家也看出来了,设计模式一共分三类

一、下面先说说,五种创建型模式

单例模式:使内存中只存在一个对象,存在两种方式:
饿汉式:在调用之前已经new好,保证只有这一个
懒汉式:访问才去new,可以避免多线程需要加锁的问题

工厂方法模式:把a类,b类…交给c类去创建,c类按条件去new

抽象工厂模式:a、b类有对应的工厂类去创建,然后工厂类实现同一接口,当有新的c类要使用时,只需再加一个工厂类,扩展性强

建造者模式:工厂升级版,可以建造更复杂的对象并控制个数,e如果需要a类1个、b类3个,运用建造者模式更好

原型模式:简单来说就是克隆,a类就是实现Cloneable接口的clone方法,也可以实现Serializable接口流的方式

二、七种结构型模式

适配器模式
问题:a类中的b方法返回值是c类,d接口的方法e的入口是f类,创建一个适配类g,继承a类的实现d接口,这样就得到了b方法,也能实现e方法

装饰器模式:也叫包装器模式,a类,b类被装饰者,c类为装饰类,引用a类b类,c类在a类b类调用方法时,或前或后的做其它操作,然后返回其对象。
这种情况下c类装饰了a类b类,而c类实现了d类,是真正要装饰的类,a和b都是为了d操作,而d类也可以实现具体动作的接口(突然想到了面向接口编程~哈哈)

代理模式:将流程代码放到proxy类中处理,通过代理控制对对象的访问。(这可是aop面向切面的核心~)
比如结婚这件事需要:准备>找地方>找人>结婚流程>其它事。使用代理就相当于找了个婚庆公司,把结婚流程的部分交给婚庆公司处理

外观模式:一个调用需要abc三个类,abc又会相互持有对方,这时候,用d类持有abc三个类,降低abc的耦合度,过程统一

桥接模式:abc类实现d接口,可以用e类来引用c接口,并且做一些均有的特性。通过放入的实现类的不一样,可以调用不同的实现方法

组合模式:有ab两类,c类拥有ab类引用,c就是组合类(这个模式我们可能在平时会不经意的使用到吧?)

享元模式:a类维护一个集合,当b使用时直接在a中取,c使用时也在a中取,a就相当于一个共享池

三、十一种行为型模式

策略模式:abc三类都实现d接口,使用同一个接口,可以new想用的某个类

模板方法模式:抽象类a调用了b1,b2方法,c类继承抽象a,就相当于调用了b1b2方法,对他们进行具体的操作(就像老师出题,学生只写答案就行了,不需要再把题抄一遍)

观察者模式:相当于监视的功能,当a类操作时,调用相应的观察者接口b。

迭代子模式:又叫游标模式,类似集合迭代器,区别就是,a类入口来存放集合b,而b集合是在a类中使用内部类去实现各种方法(如获取大小,遍历等等)

责任链模式:A.B.C相互引用,最后调用者不知道谁调用谁,不知道这个过程,所以用D类持有A.B.C的接口类,提供get,set和相应的方法,所以只要new D类,并将要调用的类set进去并调用就可以得到调用顺序。

命令模式:调用者→接受者→命令
比如你在吃烧烤,肉串吃完了叫服务员加串,服务员就会告诉烤串师父加串,烧烤师父就执行烤串的任务。这里调用者是服务员,接受者是烤串师父,执行了烤串命令。

备忘录模式:有个a类,b类引用a,想恢复时,直接去b类找a类

状态模式:红灯a,绿灯b,都继承接口c,d类拥有接口c的set、get方法,这样只要使用d类就可以为所欲为的控制灯了(嘿嘿嘿~)

访问者模式:有个a类,b类中的方法放入a就能调用a的方法,适合不改变a类的场景

中介者模式:a类b类,c类有ab引用,可以实例化,调用方法,
c类只是提供ab的工作(顾名思义,租房中介懂了吧?)

解释器模式:通过一个解释器对象处理一个规则的方式,把复杂的功能分离开;然后选择需要被执行的功能,把这些功能组合成为需要被解释执行的方法;再按照方法来解释执行,实现相应的功能

总结

每个设计模式大致的意思就是这样了,还是建议多多动手操作,这样才能牢记在心,最后在应用在项目中。

有些模式还可以相互组合,搭配使用,这样更能提高代码的水平。

我是左小涩,一个独自在大城市努力的年轻人。
对您有帮助的话,希望献上您的【三连】呦!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

左小涩°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值