假设我有一个名为apple的对象
Apple apple = new Apple();
我有一个名为
AppleHolder
的类,如下所示:class AppleHolder{
private Apple apple;
public AppleHolder(Apple apple){
this.apple = apple;
}
}
Apple
实例不能超过1个AppleHolder
。但是,当然,当我这样做时:AppleHolder appleHolder1 = new AppleHolder(apple);
AppleHolder appleHolder2 = new AppleHolder(apple);
这样,当
apple
只能有1个时,就好像有两个所有者。是否存在一种设计模式来代替return appleHolder1
?谢谢。
最佳答案
我相信您正在寻找类似Singleton模式的东西,仅限制对象之间的关系而不是它们的实例化。
修改为您的用例(假定Apple
和AppleHolder
之间是一对一的关系),它看起来像:
class Apple {
private AppleHolder appleHolder;
public AppleHolder getAppleHolder() {
return this.appleHolder;
}
// Rest of class...
}
class AppleHolder {
private Apple apple;
private AppleHolder(Apple apple) {
this.apple = apple;
}
public static AppleHolder getAppleHolder(Apple apple) {
if(apple.getAppleHolder() != null) {
return apple.getAppleHolder();
} else {
return new AppleHolder(apple);
}
}
}
在上面的代码中,一个
Apple
只能有一个AppleHolder
,而AppleHolder
只能有一个Apple
。而不是调用
AppleHolder
的构造函数,而是调用静态方法:AppleHolder.getAppleHolder(apple);
。如果提供的
AppleHolder
已经存在Apple
,则返回该AppleHolder
的Apple
。否则,将创建并返回一个新的
AppleHolder
。