设计模式分类

本文介绍了设计模式中的三大类别,包括创建型模式如单例、工厂等,以及结构型模式如外观、适配器、桥接和组合,和行为型模式如模板方法、观察者等。作者强调理解和灵活运用设计模式在软件开发中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

	很早解除设计模式的时候,就大概知道了有23种设计模式,可以分为3类,分别是创建型模式、结构型模式和行为型模式。
	创建型模式,这个很好理解,就是如何创建对象嘛,什么单例啊,工厂啊,原型啊,建造者之类的,一目了然,没什么好讲的。创建型模式提供实例化的方法,为适合的状况提供相应的对象创建方法。社会化的分工越来越细,自然在软件设计方面也是如此,因此对象的创建和对象的使用分开也就成为了必然趋势。
    结构型模式和行为型模式,这个分类,我个人觉得就很能考验一个人掌握设计模式的程度,以及是否能灵活运用了。为啥这么说呢,因为某种设计模式到底是结构型模式还是行为型模式,你得了解该设计模式到底解决了什么问题,它的应用场景到底是啥。说实话,我也不能准确说出某种设计模式是结构型模式还是行为型模式,今天借着五一假期外边下雨在家休息,把这些个模式好好捋一捋,加深对设计模式的理解,以求达到后期能灵活运用的目的。
    结构型模式通常用来处理实体之间的关系,使得这些实体能够更好地协同工作。在解决了对象的创建问题之后,对象的组成以及对象之间的依赖关系就成了开发人员关注的焦点,因为如何设计对象的结构、继承和依赖关系会影响到后续程序的维护性、代码的健壮性、耦合性等。
    外观模式(Facade)提供了一种统一接口,这个确实调整了结构;适配器模式,解决了两种不同接口之间调用的问题,也属于结构调整;代理模式提供了通过代理间接地访问对象,也是调整了结构;装饰模式动态地给对象增加一些职责,不仔细想,感觉这个属于行为型模式,为啥,因为行为改变了啊,你都给对象增加职责了。仔细想想,这个增加职责,最简单粗暴的不就是通过继承来实现的吗,这里属于调整了结构,改为动态地增加职责,所以还是属于结构型模式范畴。桥接模式,将抽象与实现分离,这种典型地属于调整结构,本来是n*m的模式,变成了n+m的结构;组合模式,这个从名字就很好反应出来了;享元模式运用共享技术来有效地支持大量细粒度对象的复用,为了复用调整结构,没毛病。
    行为型模式用于在不同的实体间进行通信,为实体之间的通信提供更容易,更灵活的通信方法。在对象的创建和对象的结构问题都解决了之后,就剩下对象的行为问题了。如果对象的行为设计的好,那么对象的行为就会更清晰,它们之间的协作效率就会提高。
    模板方法模式,父类定义方法步骤,子类负责实现,即子类控制行为;观察者模式,信号触发后,直接调用观察者消费信号的方法,也是观察者自身控制行为;状态模式,每个状态的行为由自身控制;策略模式,调用哪个策略,由子类行为控制;职责链模式,最后消息被哪个类消费,行为不确定;命令模式,行为由命令自身决定;访问者模式,将数据结构和数据操作分离,所以行为也是不确定的;中介者模式(Mediator),和外观模式有点像,这个主要是把网状关系转变为了星型关系,每个子系统之间需要交互,而外观模式每个子系统之间不需要交互,把多个接口统一为一个接口,所以属于改变了行为。即中介者模式把子系统之间交互的行为改成了同星型中心结点交互的行为。备忘录模式,将对象的状态保存在外部,以后从外部恢复,这是属于行为的改变;迭代器模式,提供一种行为来方位聚合对象;解释器模式,定义语言的文法,并且建立一个解释器来解释改语言中的句子,这里的“语言”意思是规定格式和语法的代码,所以解释器模式是一种类行为型模式。
    对自己不熟悉的模式不要恐惧,反复学习加深理解,总有能灵活运用的一天。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值