java - 添加接口使密封性变弱
问题描述
考虑以下示例:
class Ccc implements Ttt {
@Override
public void pay() {} // must be public
}
class Ddd implements Ttt {
@Override
public void pay() {} // must be public
}
public interface Ttt {
void pay();
}
// in same package, but other file:
class Eee {
private final EnumMap<SomeEnum, Ttt> strategies = new EnumMap<>(SomeEnum.class);
Allocate() {
strategies.put(SomeEnum.CERT, new Ccc());
strategies.put(SomeEnum.GROUP, new Ddd());
}
// some other methods using `strategies` Map and method `pay`
}
如果类Ccc
并且Ddd
没有实现Ttt
该方法pay
可以被保护。在我的情况下,方法pay
在类之外使用,Ccc
并且Ddd
. 但是我在类中使用多态性,Eee
因为两个类都实现了Ttt
类。
pay
我想知道以某种方式保护该方法是否会更好?我知道我必须优先考虑抽象与实现——但我认为这是它的一个缺点。
解决方案
推荐阅读
- sql - SQL 从两个等于相同搜索结果的字段中选择结果
- python - 在机器人框架中定义一个关键字以仅在失败时调用
- laravel - Laravel 8.x,3 个模型和多对多关系
- angular - 仅当 Rxjs 轮询上的某些属性更改时才调度 NgRx 操作
- bash - 将容器的环境变量用于命令谎言
- windows - 如何使用 grafana 在 Windows 10 上监控 POS 应用程序并在应用程序关闭时发送警报
- pine-script - 带 SMA 功能的偏移量
- yii2 - 如何在记录更新中隐藏 TIME 值?
- c++ - 如何删除特征矩阵中的重复行?
- c - 我想知道 for 循环 for(i=2; i<=Number/2; i++) 的解释是什么