假设我有一个名为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
,而是调用static方法:AppleHolder.getAppleHolder(apple);
。
如果AppleHolder
已经存在Apple
提供,则在AppleHolder
该Apple
返回。
否则,将AppleHolder
创建并返回一个新的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句