我试图从两个具体类中抽象出方法和字段。我不确定抽象类中的字段..
如果我尝试将它们设为Singleton对象,SearchFactory
和WorkFactory
是否会访问相同的products
字段?但是,如果我创建具体工厂的新实例,products
是一个针对不同实例的新隔离字段吗?
SlashCommand
interface SlashCommand {
}
SlashCommandFactory
abstract class SlashCommandFactory {
protected HashMap<String, SlashCommand> products
SlashCommand getProduct( String key ) {
products.key
}
void registerProduct( String key, String value ) {
products << [ key: value ]
}
}
SearchFactory
class SearchFactory extends SlashCommandFactory {
}
WorkFactory
class WorkFactory extends SlashCommandFactory {
}
答案 0 :(得分:0)
您的产品Map
为static
,这意味着它将是该类所有实例中的相同对象。它属于类,而不属于对象。
如果您将其访问修饰符设置为private
,则无法访问该字段。将其更改为protected
以直接从子类访问它。