//A.java start
public class A{
int anum=1;
portect f(){
....
}
public B getb(){
return new B();
}
} private class B{
int bnum=anum
public int add(){
A.this.f();//or f();
bnum++:
......
return bnum;
}
} //A.java end 这段代码模仿JDK中的AbstractList和Itr(Implement Iterator)两个类中的关系。
一个java文件里有两个class,一个是public一个是private。那么两个类可以互相访问其内部资源,两个类用的数据来源于同一个地方,也就是说B用A的数据,所以必须通过A来创建B,然后用A.getb()得到B,如果B b=new B(),B中没有任何数据,是没有意义的。
上例很简单,就是A类中没有得到num+1的方法,其托管给了B,然后调用A.getb().add();才能得到num+1的值。这种方式等同于把A中的一些同类型的操作抽象出来,放在一个新类里,比如说建立一个Aplus类专门负责A中各种数据的加操作。等等,这种设计方式又没有什么特别大的意义?在设计模式上又没有什么特别的名称?
public class A{
int anum=1;
portect f(){
....
}
public B getb(){
return new B();
}
} private class B{
int bnum=anum
public int add(){
A.this.f();//or f();
bnum++:
......
return bnum;
}
} //A.java end 这段代码模仿JDK中的AbstractList和Itr(Implement Iterator)两个类中的关系。
一个java文件里有两个class,一个是public一个是private。那么两个类可以互相访问其内部资源,两个类用的数据来源于同一个地方,也就是说B用A的数据,所以必须通过A来创建B,然后用A.getb()得到B,如果B b=new B(),B中没有任何数据,是没有意义的。
上例很简单,就是A类中没有得到num+1的方法,其托管给了B,然后调用A.getb().add();才能得到num+1的值。这种方式等同于把A中的一些同类型的操作抽象出来,放在一个新类里,比如说建立一个Aplus类专门负责A中各种数据的加操作。等等,这种设计方式又没有什么特别大的意义?在设计模式上又没有什么特别的名称?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货