public class A extends SireClass
{
   B oper = new B();
   oper.operData();
}别的类new A()生成对象
现在我想在oper.operData中调用那个聚合它的A的对象的一个方法,那个方法是A从SireClass继承来的, 并不了解它的机理, 所以不能把它添加在B里, 有什么办法吗?
还是这样的设计思路就有问题??另外顺便再问一个问题,关于包装类比如
PrintWriter out
   = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));
我在最外层的操作时希望能调用一个内层的方法, 比如说我想在用out.writ()后自己写一个空行,
我就希望可以调用BufferedWriter.newLine(); 而不用我自己判断操作系统换行属性, 应该怎么做呢?以上仅是举个例子

解决方案 »

  1.   

    public class A extends SireClass
    {
       B oper = new B();
       oper.operData();
    }这段代码首先就有问题的吧???
    而且照你的设计A,B是相互依赖的,如果是这样的话,那就应该把B.operData()提取到A里来,这样A就不用依赖于B了。
      

  2.   

    整个代码结构基本是这样的
    public class SireClass {}//这个类是别人提供的jar, 不可更改
    public class ThrowA {   //用作启动运行类, 主要是考虑到A的对象以后可能只作为一个组件
       public static void main(String[] args) {
         A a = new A();
         a.runcode();
    public class A extends SireClass  
    //A的作用是获取SireClass提供的方法并且加入实际需要的更改, SireClass提供了对一些我
    //不了解也不需要理解(主要是前者= =)的事件的操作, 比如说封装了一个特殊服务, 用它所
    //提供的方法来访问和操作它
    {
       
       B oper = new B();//一个对于数据比较复杂的操作
       C otheroper = new C();//另一个操作
       if (isBoolean(data))//可能有多种判断反复调用oper.operData和otheroper.operData
           oper.operData(data);
        else
           otheroper.operData(data);
    }
    public class B {
      public void operData(){
      ...
      A.reService(opereddata);//问题就在这里,class C的情况类似就不写了
    }reService()的方法是SireClass提供的, B和C没法获得, B和C分别代表了一些比较复杂的
    操作, 整合到A里是可以的, 但是我觉得分开比较清晰一些...另外每增加一个新的操作
    就聚合一个新的对象也比较容易维护...(B和C有自己的一些成员数据, 不过整合到A里也是
    可以的, 只是A的体积又大了一些)不知道这样的设计思路是不是有什么问题呢?请教
    另外也诚恳的希望大家能提供更好的设计思路, 十分感谢
      

  3.   

    漏了好多"}".....汗, 可惜csdn没法编辑, 再发一份把public class SireClass {}//这个类是别人提供的jar, 不可更改
    public class ThrowA {   //用作启动运行类, 主要是考虑到A的对象以后可能只作为一个组件
       public static void main(String[] args) {
         A a = new A();
         a.runcode();
       }
    }public class A extends SireClass  
    //A的作用是获取SireClass提供的方法并且加入实际需要的更改, SireClass提供了对一些我
    //不了解也不需要理解(主要是前者= =)的事件的操作, 比如说封装了一个特殊服务, 用它所
    //提供的方法来访问和操作它
    {
       
       B oper = new B();//一个对于数据比较复杂的操作
       C otheroper = new C();//另一个操作
       if (isBoolean(data))//可能有多种判断反复调用oper.operData和otheroper.operData
           oper.operData(data);
        else
           otheroper.operData(data);
    }
    public class B {
      public void operData(){
      ...
      A.reService(opereddata);//问题就在这里,class C的情况类似就不写了
    }
    }
      

  4.   

    可以让B和C直接extends SireClass
      

  5.   

    SireClass主要是用来包装服务的, B和C仅仅是用来处理数据
    只是为了使用它的一个方法就都继承过来的话, 似乎不太好....?