[英]Good practice to use a class w/ nested static classes, that then, extend package-private abstract classes with more static methods to stay organized?
也许我没有看到它,但我想不出这会导致什么问题,因为无法实例化扩展抽象类的静态类,但也许我应该使用一种设计模式。
这是我正在谈论的一个例子:
public class PetTrainer
{
public PetTrainer(...)
{...}
public static class LeashInstruction extends LeashInstructionAbstract
{
//No Code
}
}
在同一个包内:
abstract class LeashInstructionAbstract
{
public static void giveTreat(...)
{...}
public static...
//imagine more
}
只是为了澄清静态方法是在子类中继承的,但它不是多态的,因为您无法覆盖它们,尽管当您在子类中有具有相同签名的方法时可以隐藏它。 如果你想让事情更干净,你不需要创建一个空的静态类。 这是我根据您想要实现的目标提出的两个建议。 1.如果所有宠物训练师的LeashInstruction都相同,那么您可以执行以下操作:
public class PetTrainer
{
public PetTrainer(...)
{...}
}
和:
abstract class LeashInstructionAbstract {
public static void giveTreat() {}
}
如果 PetTrainer 类中的行为会发生变化,那么我建议执行以下操作(与抽象方法的接口):
公共类 PetTrainer { LeashInstructionImpl leashInstruction = new LeashInstructionImpl(); 公共宠物训练器(){}
public static class LeashInstructionImpl implements LeashInstruction { @Override public void giveTreat() { //somthing } } // Just for testing public static void main(String[] args) { PetTrainer petTrainer = new PetTrainer(); petTrainer.leashInstruction.giveTreat(); }
}
并且 LeashInstruction 将是:
接口 LeashInstruction { void giveTreat(); //想象更多
}
希望这会有所帮助。
当我回顾我年轻时的这个问题并试图回答它时,这个策略有很多问题。 第一个也是最大的问题是它给我的 ide 带来的负担,如果我必须这样做的话,复制/粘贴所有这些类会花费很长时间。 正如@GhostCat 正确指出的那样,这种策略的第二个问题是设计有一些可疑的东西,它不是 OOP。 如果您在 Java 中执行此操作,那么您不妨切换到函数式语言,因为它会更有效率。 这种策略是 OOP 的变种,变得难以管理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.