Oop 在对象之间共享数据、绑定属性
我对对象数据共享有一些想法Oop 在对象之间共享数据、绑定属性,oop,Oop,我对对象数据共享有一些想法 让我们用属性p1、p2定义类C(让我们认为它是不可变的) 让我们有一些类C的对象X和Y 让我们为类C的对象创建某种“容器”G。 “容器”G具有属性gp1 让我们将对象X添加到“容器”G,并使用G.gp1值“绑定”X.p1。(Bind确实指出,当对象X尝试获取属性p1的值时,它会获取gp1的值。) 让我们将对象Y添加到容器G中,并用G.gp1值“绑定”Y.p1 你可能认为这对人类来说很简单 我唯一想到的是为p1、p2属性访问创建接口。然后在类C(无共享数据)和类GC
- 让我们用属性p1、p2定义类C(让我们认为它是不可变的)
- 让我们有一些类C的对象X和Y
- 让我们为类C的对象创建某种“容器”G。 “容器”G具有属性gp1
- 让我们将对象X添加到“容器”G,并使用G.gp1值“绑定”X.p1。(Bind确实指出,当对象X尝试获取属性p1的值时,它会获取gp1的值。)
- 让我们将对象Y添加到容器G中,并用G.gp1值“绑定”Y.p1
如何为每个对象创建这种绑定操作?(不使用DSC,使用C派生的语言:java、C++、C++、PHP、……)< /p> ,问题在哪里?p2的作用是什么
static class G{
int gp1;
}
static class C{
int p1,p2;
G provider;
C(G provider){
provider=this.provider;
}
int getP1(){
return provider.gp1;
}
}
static class X extends C{
X(G provider){
super(provider);
}
}
static class Y extends C{
Y(G provider){
super(provider);
}
}
只有通过接口提供提供者,解决方案才能是通用的。但你不想用它。没有接口的通用解决方案在这里是不可能的
interface IProvider{
int getGp1();
}
static class G implements IProvider{
private int gp1;
int getGp1(){return gp1};
}
static class C{
int p1,p2;
IProvider provider;
C(IProvider provider){
provider=this.provider;
}
int getP1(){
return provider.gp1;
}
}
static class X extends C{
X(G provider){
super(provider);
}
}
static class Y extends C{
Y(G provider){
super(provider);
}
}
请注意,在类中有一个字段并通过getter返回另一个类中的另一个字段是非常不直观和危险的构造您可能对在类中有一个字段并通过getter返回另一个类中的另一个字段的意义感兴趣?这是非常危险的构造。它可能是一个虚拟字段。问题是X和Y是为特定容器构造的,没有它就不能使用。因此,要创建通用对象,您需要创建更多的类,而这正是我不想要的。@user1759572只有通过接口提供提供程序,它才能是通用的。但你不想用它。没有接口的通用解决方案在这里是不可能的。