子类沙盒

子类沙盒的目的:使用一个基类提供的操作集合进而在子类中定义行为。一个基类定义了一个抽象的沙盒方法和一些提供的操作。通过设置他们为保护状态来保证它们仅供子类使用,每个继承的沙盒子类针对父类提供的操作来实现沙盒函数。将所有的耦合都聚集到基类,子类就明显地与其他类更加独立。


当你发现基类有大量子类的时候,这意味着数据驱动的方法可能更适合。找到一种定义数据的行为的方法,而不是用大量的代码来定义。


使用情境:

1.你有一个带有大量子类的基类

2.基类能够提供所有子类可能需要执行的操作集合

3.在子类之间有重叠的代码,你想让它们之间更容易地共享代码

4.你想使这些继承类和程序的其他代码之间的耦合最小化


当你有一堆与外部系统耦合的继承类的话,那么就可以使用这个模式,通过把耦合向上移到一个提供的操作,从而把它聚集到基类。但这样会使基类越来越大和越来越难以维护。


当你的基类塞满了大量的方法,您能够通过转移一些函数到其他类中来缓解这种情况,在基类中提供的函数返回这些对象之一。


基类经常需要一些数据来封装和保护对子类的隐藏,基类获取需要状态的方法:

1.把它传递到基类构造函数,这样每个子类都需要调用基类的构造函数来传递该参数,这样会将不期望的状态暴露给每个子类,同时也存在维护成本

2.通过二级初始化来避免通过构造函数传递所有的东西,构造函数将不带参数仅仅创建对象,调用基类中的函数来传递它需要的余下部分数据

3.如果所需状态是单例,每个实例都将共享同样的状态,此时这个状态对基类是私有的也是静态的,其就只需要初始化一次

4.通过服务定位器模式将其需要的状态拉进去处理







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值