记得在一本叫做“面向对象程序设计”(用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变量这样不是死循环吗
由于历史原因这本书不在我身边
想问一下我有class User;class UserControl 和Class UserView如何去相互调用另外,如果我的程序中
class User
{
Article articleList[];
}Class Article
{
User owner;
}
想问一下当我初始化Article 的一个对象时同时会初始化owner成员,而owner在初始化时又会初始articleList[]
articleList[]的每一个元素都初始化一个Article对象,而这个Article对象又要初始化其User类型的owner变量这样不是死循环吗
在User外 加层代理后,使用懒加载,当需要使用User->articleList的时候,再加载,这时候一般要结合 约束条件,查询符合条件的articleList
同样 Article ,初始化的时候,也不一定要加载User owner,只不过这里的确有个 占位符的样子,当需要用到的时候,再加载
另外说的死循环,就是递归,其实这里,对象间的关系是相互引用的,实例化后用print_r(),或者串行化后看值,并没有重复的相互镶套什么,只是一个占位符
然后就是相互引用操作在典型的MVC框架rails框架中,控制器和模型类交互,然后控制器将结果传给views
你这种调用的程序,在运行中很容易出现错误。
我现在一直使用数组存放ArticleList
然后在使用的时候在初始化Article
Article(物品?)包含User(使用者)于理不通。如果是基于Java中用来表现单纯的数据POJO的使用方法,此用法不光在程序方面,而且有设计理论上的缺陷。
Article和User只需要描述目标属性即可,不需要加上目标之间的联系。如果是O/R Mapping思想,想要体现目标间关系的话,应该是User拥有n个Article,而Article中不需要包含User。
一个User,已经包含了Article,Article中没有必要重新定义User如果是VO/TO思想,也可以在第三方bean中,同时定义User、Article属性,但是,千万不要交叉定义。
你的程序所体现的是,把同一个数据在不同的量的地点,定义两次。
你看一下java 中LINK-LIST CLASS 就会明白c/c++也是如此你只是不明白指向和创建对象的区别
ps.楼主是半道出家的?
“然后控制器将结果传给views”这里的结果是什么,是传递了模型的实例吗
还是用其他的数据结构传递?
关于对象,有一个外观对象和模型对象,如何天人合一的话题,说实话,俱消息灵通人士称,此乃是史上10大未解之迷之一,另有组织声称,另九大已不可考,且不对声称的内容负任何责任……