【游戏筹划模式】【运动型模式】子类沙盒

[复制链接]
发表于 2025-12-24 12:02:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
子类沙盒

一个基类界说了一个抽象的沙盒方法和一些预界说的利用聚集。设为受掩护状态确保它们仅供子类使用。每个派生出的沙盒子类根据父类提供的利用来实现沙盒函数
简单来说,就是在基类封装好很多方法,然后再在子类中,去组合这些方法。
实用景象

假如说你有一个基类,内里有很多方法,然后你有很多子类,这些子类都必要用到这些方法,但是每个子类用到的方法不一样,那么就可以使用子类沙盒模式。
实际例子

你想实现邪术体系,有很多种邪术,每种邪术都有自己的实现,但是每种邪术都必要用到一些根本的方法,比如说开释邪术,斲丧邪术,这些方法都是一样的,那么就可以使用子类沙盒模式。
代码示例
  1. class BaseSandbox {
  2. protected:
  3.     void operation1() {
  4.         // Perform operation 1
  5.     }
  6.     void operation2() {
  7.         // Perform operation 2
  8.     }
  9.     // Add more protected operations as needed
  10. };
  11. class DerivedSandbox : public BaseSandbox {
  12. public:
  13.     void sandboxFunction() {
  14.         operation1();
  15.         operation2();
  16.         // Call other operations from the base class
  17.     }
  18. };
  19. int main() {
  20.     DerivedSandbox sandbox;
  21.     sandbox.sandboxFunction();
  22.     return 0;
  23. }
复制代码
标题

通过将耦合转交给基类的方法,让子类仅与基类耦合。
假如随着必要添加的方法变多,基类将变得越来越巨大。
必要提供什么利用


  • 假如利用仅仅只被少数子类使用,那么不必将其放在基类中。
  • 假如调用的方法并不改变状态,那么这个耦合是“安全”的。假如改变了状态,则要思量由基类去提供。
用辅助类再次封装方法

用辅助类对同范例的方法举行二次封装,然后在基类中提供这个辅助类的实例。如许可以镌汰基类的方法数目。
基类得到其所需状态的方法

假如基类必要访问外部实例,而且盼望保持对子类隐蔽(比如例子体系),有哪些方法可以转达这些实例呢?

  • 构造函数转达
    通过构造函数在子类构造的时间转达实例
    缺点:子类必须知道这个实例是什么,如许就会袒露实例的细节
  • 构造初始化方法转达
    使用一个初始化方法来转达实例
    缺点:子类必须调用这个初始化方法
  • 状态静态化
    把必要的实例变成静态变量,如许就可以在基类中直接访问
    缺点:缺点就是它是静态的,只有一个实例,不实用于多个实例的情况
  • 服务定位器
    使用一个服务定位器来转达实例
    缺点:服务定位器是全局的,大概会导致全局状态的标题,而且比力复杂
总结

子类沙盒是一种将利用封装在基类中,然后在子类中组合这些利用的方法。如许可以镌汰子类的耦合,但是也会导致基类变得巨大。可以通过辅助类再次封装方法,大概通过构造函数转达、构造初始化方法转达、状态静态化、服务定位器等方法来转达实例。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表