记得在一本叫做“面向对象程序设计”(用java描述的)的书中作者强调同一层的类不要相互调用要使用Control类调用
由于历史原因这本书不在我身边
想问一下我有class User;class UserControl 和Class UserView如何去相互调用另外,如果我的程序中
class User

    Article articleList[];
}Class Article 
{
    User owner;
}
想问一下当我初始化Article 的一个对象时同时会初始化owner成员,而owner在初始化时又会初始articleList[]
articleList[]的每一个元素都初始化一个Article对象,而这个Article对象又要初始化其User类型的owner变量这样不是死循环吗

解决方案 »

  1.   

    User 对象初始化的时候,并不让articleList[]初始化,这太多了,一起加载到内存
    在User外 加层代理后,使用懒加载,当需要使用User->articleList的时候,再加载,这时候一般要结合 约束条件,查询符合条件的articleList
    同样 Article ,初始化的时候,也不一定要加载User owner,只不过这里的确有个 占位符的样子,当需要用到的时候,再加载
    另外说的死循环,就是递归,其实这里,对象间的关系是相互引用的,实例化后用print_r(),或者串行化后看值,并没有重复的相互镶套什么,只是一个占位符
      

  2.   

    相互调用首先这三个可以一起声明
    然后就是相互引用操作在典型的MVC框架rails框架中,控制器和模型类交互,然后控制器将结果传给views
      

  3.   

    可以在第三方类中同时使用User和Article,
    你这种调用的程序,在运行中很容易出现错误。
      

  4.   


    我现在一直使用数组存放ArticleList
    然后在使用的时候在初始化Article
      

  5.   


    Article(物品?)包含User(使用者)于理不通。如果是基于Java中用来表现单纯的数据POJO的使用方法,此用法不光在程序方面,而且有设计理论上的缺陷。
    Article和User只需要描述目标属性即可,不需要加上目标之间的联系。如果是O/R Mapping思想,想要体现目标间关系的话,应该是User拥有n个Article,而Article中不需要包含User。
    一个User,已经包含了Article,Article中没有必要重新定义User如果是VO/TO思想,也可以在第三方bean中,同时定义User、Article属性,但是,千万不要交叉定义。
    你的程序所体现的是,把同一个数据在不同的量的地点,定义两次。
      

  6.   

    这并不是什么错误
    你看一下java 中LINK-LIST CLASS 就会明白c/c++也是如此你只是不明白指向和创建对象的区别
    ps.楼主是半道出家的? 
      

  7.   


    “然后控制器将结果传给views”这里的结果是什么,是传递了模型的实例吗
    还是用其他的数据结构传递? 
      

  8.   

    俱不可考消息,views渲染外观时,对象和数组差距不大,主要用数据
    关于对象,有一个外观对象和模型对象,如何天人合一的话题,说实话,俱消息灵通人士称,此乃是史上10大未解之迷之一,另有组织声称,另九大已不可考,且不对声称的内容负任何责任……