安徽新华电脑专修学院_安徽电脑培训_安徽电脑培训学校_合肥电脑培训

當(dāng)前位置:首頁(yè) > 網(wǎng)站舊欄目 > 學(xué)習(xí)園地 > 設(shè)計(jì)軟件教程 > DomainModel之DomainObject

DomainModel之DomainObject
2010-01-14 22:32:24  作者:  來(lái)源:
相對(duì)于UI的開(kāi)發(fā)受限于既有框架的結(jié)構(gòu),DomainModel有更大的靈活性,因?yàn)榭蚣鼙旧碛勺约洪_(kāi)發(fā)的。
  在整個(gè)DomainModel框架中,最基礎(chǔ)的對(duì)象莫過(guò)于DomainObject。DomainObject既然是所有領(lǐng)域
對(duì)象的父類,就該體現(xiàn)最基礎(chǔ)的特征。并且為其他層或某些方面提供一致的入口。
  “有名萬(wàn)物之母”,這也是DomainObject中需要體現(xiàn)的。
DomainObject的名有很多,很多的原因是有很多關(guān)心它的參與者。

計(jì)算機(jī)使用的名--ID:必須,通常為64位的Integer。如果數(shù)據(jù)庫(kù)是64位的CPU,據(jù)說(shuō)這樣定ID效率是最高的。

第三方和用戶輸入的名--Code:可選,String類型。盡管計(jì)算機(jī)知道了DomainObject,但用戶卻不知道,(用戶登錄系統(tǒng)就需要通過(guò)Code)第三方的開(kāi)發(fā)人員也不知道。

用戶期望看到的名--Name: 可選,String類型。對(duì)應(yīng)于自然語(yǔ)言中的名。

用戶期望看到的關(guān)于該對(duì)象的描述之名--Description:可選,String類型。這也需要最不重要的名了,對(duì)于該對(duì)象的備注,簡(jiǎn)要解釋都可以放到這里。

有了名,我們就可以思考DomainObject了,基于“萬(wàn)物皆過(guò)程”的思考,表現(xiàn)過(guò)程的屬性是需要加上的。于是
DomainObject有了{(lán)TimePeriod lifecycle}字段。lifecycle.start應(yīng)該可以在某個(gè)構(gòu)造函數(shù)中填入,當(dāng)對(duì)象在業(yè)務(wù)上無(wú)效時(shí)可以填入lifecycle.end。DomainObject就“存活”于lifecycle之中。
當(dāng)然你可以殘酷一些,讓DomainObject回歸虛無(wú),直接調(diào)用destroy方法,徹底刪除它。

實(shí)際上持久化的DomainObject不過(guò)是反映了對(duì)象在lifecycle期間的當(dāng)前快照,也就是說(shuō)DomainObject存在很多快照,
我們可以使用{int version}來(lái)標(biāo)識(shí)當(dāng)前快照。

不知道什么時(shí)間,有人在DomainObject中放入了{(lán)int serialNumber},說(shuō)是為了比較同類DomainObject的次序,我也說(shuō)不清這是否站得住腳。

Java代碼 復(fù)制代碼
  1. public abstract class DomainObject implements Comparable{   
  2.        
  3.     private Long id;   
  4.        
  5.     private String code;   
  6.        
  7.     private String name;   
  8.   
  9.     private String description;   
  10.   
  11.           private TimePeriod lifecycle;   
  12.   
  13.           private int version;   
  14.   
  15.           private int serialNumber;   
  16.   
  17.     /**  
  18.     * 從持久層中重新構(gòu)造DomainObject  
  19.     */  
  20.     protected DomainObject(); {   
  21.   
  22.     }   
  23.   
  24.     /**  
  25.     * 業(yè)務(wù)上創(chuàng)建DomainObject  
  26.     */  
  27.     protected DomainObject(String name, String code, int serialNumber,   
  28.         String description); {   
  29.         this.id = IdGenerator.getCurrent();.nextId(this);;   
  30.         this.version = 0;   
  31.         this.lifecycle = new TimePeriod();;   
  32.         this.name = name;   
  33.         this.code = code == null ? id.toString(); : code;   
  34.         this.serialNumber = serialNumber;   
  35.         this.description = description;   
  36.     }   
  37.        
  38.     public void destroy(); {   
  39.        
  40.     }   
  41.        
  42.     @Override  
  43.     public int hashCode(); {   
  44.         assert id != null : this.getClass();.getName(); + " id為null";   
  45.         return id.hashCode();;   
  46.     }   
  47.   
  48.     @Override  
  49.     public boolean equals(Object obj); {   
  50.         if (!(obj instanceof DomainObject););   
  51.             return false;   
  52.         DomainObject domainObj = (DomainObject); obj;   
  53.         return this.getId();.longValue(); == domainObj.getId();.longValue();;   
  54.     }   
  55.   
  56.     public int compareTo(Object obj); {   
  57.         assert this.getClass(); == obj.getClass(); : "無(wú)在不同的DomainObject間比較";   
  58.         DomainObject o = (DomainObject); obj;   
  59.         return this.serialNumber.compareTo(o.serialNumber);;   
  60.     }   
  61.        
  62.     /**  
  63.     * 判斷DomainObject是否已過(guò)期  
  64.     */  
  65.     public boolean isExpired(); {   
  66.         Calendar now = Calendar.getInstance();;   
  67.         if (now.compareTo(lifecycle.getEnd();); > 0);   
  68.             return true;   
  69.         else  
  70.             return false;   
  71.     }   
  72.        
  73.     public TimePeriod getLifecycle(); {   
  74.         return (TimePeriod); lifecycle.clone();;   
  75.     }   
  76.        
  77.     public void setEnd(Calendar end); {   
  78.         lifecycle.setEnd((Calendar); end.clone(););;   
  79.     }   
  80.        
  81.     public void checkVersion(int version); {   
  82.         if (this.version.compareTo(version); != 0);   
  83.             throw new DataChangedByOthersException();;   
  84.     }   
  85.        
  86. }  

安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢
主站蜘蛛池模板: 宿迁市华泰交通设施有限公司,上海第四代路名牌,天津仿罗马柱路名牌,标准路名牌,路名牌灯箱,公交站台,户外广告灯箱, 交通标志牌,社区阅报栏 | 上海企业团建|上海团建|上海团建活动|上海拓展培训|上海拓展训练|傲朗企业管理顾问(上海)有限公司 | 输送机电动滚筒_山东电动滚筒_输送机滚筒_皮带输送机-山东中输输送机械有限公司 | 轻型防化服|重型防化服|全封闭防化服|济南三安安全防护设备有限公司 | 微行科技(MicroX):半导体装备核心供应商-超高真空炉 | 激光焊接不锈钢翅片管,不锈钢翅片管,激光焊接复合翅片管,南通拓帆换热设备有限公司 | 联想南京总代理-联想服务器|联想电脑笔记本代理商|联想工作站|dell服务器|HP服务器|南京IBM代理商|IBM V5000存储总包销-南京宇宽科技有限公司 | 中国江苏国际经济技术合作集团有限公司-致力于做大做强国际工程、国内工程、国际贸易和城镇投资 中国建材信息总网-中国建材行业权威的信息资讯平台 | 廊坊装修装饰公司|家装设计选廊坊纽泽装饰_电话4000621358[本地实体] | 售后服务认证-五星级物业售后服务体系认证证书-ISO27001信息安全管理体系认证证书查询认E云-湖北省贯标企业管理咨询有限公司 | 直流屏|青岛直流屏|直流屏电池-世界500强艾默生直流屏标准生产厂家赛里斯能源科技有限公司 | 云南破碎机-制砂机-洗砂机-振动筛-昆明昆重机械厂家 | 河南反渗透设备,河南纯净水设备,河南软化水设备,郑州EDI超纯水设备,郑州水处理设备厂家_河南江宇环保科技有限公司 | 蒸汽孔板流量计-法兰式孔板流量计-一体化标准孔板流量计-金湖中原仪表有限公司 | 钱眼网-透过钱眼看商机| 原创软文新闻稿-网站SEO文章代写-征文演讲稿代笔-写作阁 | 玉米加工机械_玉米加工设备_玉米深加工机械_玉米糁加工设备--滑县鑫丰粮油机械有限公司 | 华药药业集团|华药修医师|修医师浸膏|河南华药药业有限公司 | 新鲜水果 新鲜茶 - 甜啦啦官网| 锯轨机|气动锯轨机|内燃锯轨机|电动钢轨钻孔机|内燃钢轨钻孔机-山东卓力铁路设备有限公司 | 铁谷网-垂直于铸造产业链服务平台、原材料采购网、行业资讯网 | 挥发性有机物,VOCs在线监测系统,深圳市恒富盛科技有限公司 | 英格索兰隔膜泵_ARO气动隔膜泵_英格索兰隔膜泵配件【原厂正品】连续五年无投诉_英格索兰隔膜泵代理-苏州瑞晟茂环保设备有限公司 印刷公司,北京印刷厂,宣传画册手册印刷厂-和智印彩页设计 | 橡胶管_高压橡胶管_高压胶管_铠装高压胶管-河北远大新特橡塑有限公司 | 吸管包装机_塑料杯包装机_纸杯包装机_吸管挤出机_温州恩博机械有限公司 | 在线播放国产精品|哔咔漫画破解版永久vip兑换码|免费黄漫画|女被黄漫扒衣服软件|91精品麻豆 | 有源滤波器-高压无功补偿装置-高压无功补偿柜-10KV电容柜-安徽众升电力科技有限公司 | 四川迪瑞机电设备有限公司-容积式换热器|半容积式换热器|容积式换热机组|半容积式水加热器|换热器在线除垢防垢器|迪瑞机电 | 永磁变频空压机_青岛空压机_螺杆空压机_口罩专用空压机-青岛凯瑞特机电设备有限公司 | 现代卓越官网-专注于pmp培训证书-pmp考试报名时间-pmp认证-项目管理pmp-ACP敏捷管理-NPDP认证 | 天之水网_新时代主流门户网站 十大文明网,主流新媒 、 值得信赖、关注我、温暖你! | ?神龙上古堂全国官网_颈腰椎调理服务中心_萨迦藏式秘方渗透法 | 铁氟龙膜/板/棒-铁氟龙网带/胶带/胶布-[东莞华氟]专注铁氟龙及特氟龙制品生产 | 义乌供需网-义乌外发加工来料加工,义乌采购信息供求对接平台(yiwugongxu.com) | 精品中文字幕在线观看,粉嫩av一区二区三区,最近中文字幕在线看免费视频,亚洲高清在线观看,日本一区二区视频手机免费看,国产黄色小视频,亚洲高清免费视频,国产精品一区二区欧美视频,亚洲人免费视频,亚洲视频在线观看免费,国产免费高清综合视频,中文字幕永久在线 | 威海赶海网、乳山特产、威海专营海产品、威海旅游产品 - 威海赶海电子商务 | 鹰潭代理记账公司_鹰潭代理记账_鹰潭注册公司-鹰潭市新知会计服务有限公司 | 双合金_注塑机_螺杆|炮筒|料管|料筒-广东海驰德塑胶机械有限公司 | 消防安装_消防安装施工_消防施工_北京消防安装公司-亿杰(北京)消防工程有限公司 | 神马影院电影网_实时更新秒播电视剧、电影、动漫的网站 _ 神马影院 | 球场地板_运动场地面_体育设施器材_地坪漆工程_项目承接-大上实业(深圳)有限公司 |