最全面、最前沿、最专业的游戏研发实战

提供最全面的游戏研发技能分享,让您在最短时间变成高级游戏工程师

查看:0|回复:3

【推荐】用了也有好多年C++了,为啥平时没怎么用到设计模式?除了单例?

 attach_img

3

帖子

9

回复

10

积分
最后登录:
2025-04-06 19:02
注册时间:
2023-02-26 14:02
楼主
  发表于:2025-04-06 22:45:42|查看用户信息

用了也有好多年C++了,为啥平时没怎么用到设计模式?除了单例?

你平时开发解决什么问题时候用到过?


4

帖子

8

回复

11

积分
最后登录:
2025-04-06 20:19
注册时间:
2024-10-11 22:10
1 楼
  发表于:2025-04-06 22:47:23|查看用户信息

有一大堆设计模式解决的是函数不是第一类值(first class value)的问题,有了std::function以后就都没用了。

有一大堆设计模式解决的是类不是第一类值的问题,有了反射之后就没用了。

有一大堆设计模式解决的是静态类型接口不兼容的问题,用动态类型就没事了,当然这一条有好有坏。

然后有人把这三类分成了对象型,创建型,行为型,并总结了23条,命名成设计模式,供大家学习,并解决开发中的问题。

只是有没有想过,这些问题实际上都可以不存在?只要跳出面向对象的框架,一切都不是问题?


2

帖子

9

回复

10

积分
最后登录:
2025-04-06 20:58
注册时间:
2024-12-05 09:32
2 楼
  发表于:2025-04-06 22:57:53|查看用户信息

如果你没有参与项目架构代码编写,可能不太容易直接写设计模式的代码。但你应该是接触到了,你基于公司的平台添加功能,公司平台里面肯定是用了差不多两三种设计模式的。


当我们自己要设计架构的时候,就需要熟练理解每种设计模式的类图,然后将实际项目中的变化分析出来,再和设计模式对应,来决定是否用设计模式或者用什么设计模式,这往往是很难的,因此这也是架构师的必修课。


说白了,设计模式是为了应对变化,方便代码扩展。很多设计模式我们平时没怎么用,可能是项目不够大型复杂,因此项目中的变化不多。

但几种常见的设计模式我们还是会经常用的。

1、工厂模式(Factory Pattern):用于创建对象,隐藏对象的创建逻辑,并提供一个统一的接口返回对象实例。

举例:在一个图形绘制应用中,可以使用工厂模式创建不同类型的图形对象,如圆形、矩形和三角形,并统一通过图形接口进行绘制,这个图形接口我们将基类指针或引用作为参数传递进来,这样这个接口就能接受所有继承基类的图形对象,这种做法其实很常见。


2、观察者模式(Observer Pattern):定义对象之间的一对多关系,当一个对象状态改变时,所有依赖它的对象都会得到通知并自动更新。

举例:博客订阅的例子,当博主发表新文章的时候,即博主状态发生了改变,那些订阅的读者就会收到通知,然后进行相应的动作,比如去看文章,或者收藏起来,或者什么也不做。博主与读者之间存在种一对多的依赖关系。


3、装饰器模式(Decorator Pattern):动态地给一个对象添加额外的职责,同时又不改变其结构。

举例:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。有时我们希望给某个对象而不是整个类添加一些功能。比如有一个手机,允许你为手机添加特性,比如增加挂件、屏幕贴膜等。一种灵活的设计方式是,将手机嵌入到另一对象中,由这个对象完成特性的添加,我们称这个嵌入的对象为装饰。


4、策略模式(Strategy Pattern):定义一系列算法,将其封装起来,并使它们可以互换使用,使得算法可以独立于客户端变化。

就是说这些算法所完成的功能一样,对外的接口一样,只是各自实现上存在差异。用策略模式来封装算法,效果比较好。


这里我就不写设计模式代码了,网上有很多例子,可以搜来看,然后加深理解。

其实当你对于某个设计模式很有嗅觉,能快速的将业务抽象成某种设计模式,那么可以说这种设计模式你差不多就掌握了。

总之,并不是所有的项目都需要显式地使用设计模式。设计模式是一种思想和方法论,它的应用取决于项目的复杂性、需求变化、团队规模。在开发中,理解设计模式的概念和原则,能够更好地设计灵活、可维护、可扩展的代码架构,但在简单的项目中,可能并不需要使用设计模式。


2

帖子

3

回复

5

积分
最后登录:
2025-04-06 21:17
注册时间:
2024-08-21 17:40
3 楼
  发表于:2025-04-06 23:00:09|查看用户信息

说几个C++里面很常见的设计模式吧:

总体来说设计模式分为三大类

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

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

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

其实还有两类:并发型模式和线程池模式。


共 1/1 页

0

帖子

0

回复

0

积分
最后登录:
1970-01-01 08:00
注册时间:
1970-01-01 08:00
会员必须登录才能发布帖子! 点击登录