如果你没有参与项目架构代码编写,可能不太容易直接写设计模式的代码。但你应该是接触到了,你基于公司的平台添加功能,公司平台里面肯定是用了差不多两三种设计模式的。
当我们自己要设计架构的时候,就需要熟练理解每种设计模式的类图,然后将实际项目中的变化分析出来,再和设计模式对应,来决定是否用设计模式或者用什么设计模式,这往往是很难的,因此这也是架构师的必修课。
说白了,设计模式是为了应对变化,方便代码扩展。很多设计模式我们平时没怎么用,可能是项目不够大型复杂,因此项目中的变化不多。
但几种常见的设计模式我们还是会经常用的。
1、工厂模式(Factory Pattern):用于创建对象,隐藏对象的创建逻辑,并提供一个统一的接口返回对象实例。
举例:在一个图形绘制应用中,可以使用工厂模式创建不同类型的图形对象,如圆形、矩形和三角形,并统一通过图形接口进行绘制,这个图形接口我们将基类指针或引用作为参数传递进来,这样这个接口就能接受所有继承基类的图形对象,这种做法其实很常见。
2、观察者模式(Observer Pattern):定义对象之间的一对多关系,当一个对象状态改变时,所有依赖它的对象都会得到通知并自动更新。
举例:博客订阅的例子,当博主发表新文章的时候,即博主状态发生了改变,那些订阅的读者就会收到通知,然后进行相应的动作,比如去看文章,或者收藏起来,或者什么也不做。博主与读者之间存在种一对多的依赖关系。
3、装饰器模式(Decorator Pattern):动态地给一个对象添加额外的职责,同时又不改变其结构。
举例:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。有时我们希望给某个对象而不是整个类添加一些功能。比如有一个手机,允许你为手机添加特性,比如增加挂件、屏幕贴膜等。一种灵活的设计方式是,将手机嵌入到另一对象中,由这个对象完成特性的添加,我们称这个嵌入的对象为装饰。
4、策略模式(Strategy Pattern):定义一系列算法,将其封装起来,并使它们可以互换使用,使得算法可以独立于客户端变化。
就是说这些算法所完成的功能一样,对外的接口一样,只是各自实现上存在差异。用策略模式来封装算法,效果比较好。
这里我就不写设计模式代码了,网上有很多例子,可以搜来看,然后加深理解。
其实当你对于某个设计模式很有嗅觉,能快速的将业务抽象成某种设计模式,那么可以说这种设计模式你差不多就掌握了。
总之,并不是所有的项目都需要显式地使用设计模式。设计模式是一种思想和方法论,它的应用取决于项目的复杂性、需求变化、团队规模。在开发中,理解设计模式的概念和原则,能够更好地设计灵活、可维护、可扩展的代码架构,但在简单的项目中,可能并不需要使用设计模式。