浏览 1816 次
锁定老帖子 主题:请教关于继承和引用引申的类设计问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-09-11
目前有两种方式,设计这种关系。 第一种是:Is a的方式,继承的方式。如下代码所示: public class DataTag { protected int tagId;//测点Id protected String tagName;//测点名称 protected String tagDesc;//测嗲描述 protected String tagUnit;//测点单位 protected String tagDataSource;//测点数据源 protected String tagType;//测点的类型。 protected int tagOrder;//标签排序用 } public class DataTagValue extends DataTag { /** * */ private static final long serialVersionUID = 2688238773074983855L; private Date date;// 日期 private float value;// 值 private String singnal;// 状态 private String valueType; } 第二种是:Has a的方式,即引用的方式。如下代码所示: public class DataTag { protected int tagId;//测点Id protected String tagName;//测点名称 protected String tagDesc;//测嗲描述 protected String tagUnit;//测点单位 protected String tagDataSource;//测点数据源 protected String tagType;//测点的类型。 protected int tagOrder;//标签排序用 } public class DataTagValue { private DataTag tag;//这里将此作为私有属性来处理。 private Date date;// 日期 private float value;// 值 private String singnal;// 状态 private String valueType; } 采用这两种方式有什么区别?可能有人会提到和怎么使用有关系。那我在这里假设一种使用场景。 假设现在要计算某DataTag对象的10个时间的数据,会产生10个DataTagValue,这种情况下继承方式和引用方式,哪种 刚能节省内存? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-09-11
按照设计原则 组合优先于继承 那就has啊
|
|
返回顶楼 | |
发表时间:2008-09-11
你这个还不是装饰者模式 设计模式用不上了
|
|
返回顶楼 | |
发表时间:2008-09-11
laiseeme 写道 你这个还不是装饰者模式 设计模式用不上了 感觉上是引用方式比较节省内存。 采用引用方式,DataTag的属性信息只需在内存中保留一份,产生的DataTagValue对象只须引用其内存地址即可,这样内存的开销会小很多。 |
|
返回顶楼 | |