我对对象数据共享有一些想法。
你可能认为这对人类来说很简单。
我想到的唯一想法是为 p1,p2 属性访问创建界面。然后在 Class C (无共享数据)和 Class GC (带容器数据)中实现接口。然后装饰对象以添加方法。
正如您所看到的,每个绑定都添加了一个接口+接口实现。这很难写,有点难看。
问题: 如何为每个对象创建这种绑定操作? (没有实现DSL,使用C派生语言:java,C#,C ++,php,...)
答案 0 :(得分:0)
问题出在哪里?什么是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返回另一个字段中的另一个字段是非常不直观和危险的构造