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

當(dāng)前位置:首頁 > 網(wǎng)站舊欄目 > 學(xué)習(xí)園地 > 設(shè)計軟件教程 > 總結(jié)一下最近關(guān)于domain object以及相關(guān)的討論

總結(jié)一下最近關(guān)于domain object以及相關(guān)的討論
2010-01-14 22:28:47  作者:  來源:
在最近的圍繞domain object的討論中浮現(xiàn)出來了三種模型,(還有一些其他的旁枝,不一一分析了),經(jīng)過一番討論,各種問題逐漸清晰起來,在這里我試圖做一個總結(jié),便于大家了解和掌握。

第一種模型:只有g(shù)etter/setter方法的純數(shù)據(jù)類,所有的業(yè)務(wù)邏輯完全由business object來完成(又稱TransactionScript),這種模型下的domain object被Martin Fowler稱之為“貧血的domain object”。下面用舉一個具體的代碼來說明,代碼來自Hibernate的caveatemptor,但經(jīng)過我的改寫:

一個實體類叫做Item,指的是一個拍賣項目
一個DAO接口類叫做ItemDao
一個DAO接口實現(xiàn)類叫做ItemDaoHibernateImpl
一個業(yè)務(wù)邏輯類叫做ItemManager(或者叫做ItemService)

Java代碼 復(fù)制代碼
  1. public class Item implements Serializable {   
  2.     private Long id = null;   
  3.     private int version;   
  4.     private String name;   
  5.     private User seller;   
  6.     private String description;   
  7.     private MonetaryAmount initialPrice;   
  8.     private MonetaryAmount reservePrice;   
  9.     private Date startDate;   
  10.     private Date endDate;   
  11.     private Set categorizedItems = new HashSet();   
  12.     private Collection bids = new ArrayList();   
  13.     private Bid successfulBid;   
  14.     private ItemState state;   
  15.     private User approvedBy;   
  16.     private Date approvalDatetime;   
  17.     private Date created = new Date();   
  18.     //  getter/setter方法省略不寫,避免篇幅太長   
  19. }  


Java代碼 復(fù)制代碼
  1. public interface ItemDao {   
  2.     public Item getItemById(Long id);   
  3.     public Collection findAll();   
  4.     public void updateItem(Item item);   
  5. }  


ItemDao定義持久化操作的接口,用于隔離持久化代碼。

Java代碼 復(fù)制代碼
  1. public class ItemDaoHibernateImpl implements ItemDao extends HibernateDaoSupport {   
  2.     public Item getItemById(Long id) {   
  3.         return (Item) getHibernateTemplate().load(Item.class, id);   
  4.     }   
  5.     public Collection findAll() {   
  6.         return (List) getHibernateTemplate().find("from Item");   
  7.     }   
  8.     public void updateItem(Item item) {   
  9.         getHibernateTemplate().update(item);   
  10.     }   
  11. }  

ItemDaoHibernateImpl完成具體的持久化工作,請注意,數(shù)據(jù)庫資源的獲取和釋放是在ItemDaoHibernateImpl里面處理的,每個DAO方法調(diào)用之前打開Session,DAO方法調(diào)用之后,關(guān)閉Session。(Session放在ThreadLocal中,保證一次調(diào)用只打開關(guān)閉一次)

Java代碼 復(fù)制代碼
  1. public class ItemManager {   
  2.     private ItemDao itemDao;   
  3.     public void setItemDao(ItemDao itemDao) { this.itemDao = itemDao;}   
  4.     public Bid loadItemById(Long id) {    
  5.         itemDao.loadItemById(id);   
  6.     }   
  7.     public Collection listAllItems() {   
  8.         return  itemDao.findAll();   
  9.     }   
  10.     public Bid placeBid(Item item, User bidder, MonetaryAmount bidAmount,   
  11.                         Bid currentMaxBid, Bid currentMinBid) throws BusinessException {   
  12.             if (currentMaxBid != null && currentMaxBid.getAmount().compareTo(bidAmount) > 0) {   
  13.         throw new BusinessException("Bid too low.");   
  14.     }   
  15.        
  16.     // Auction is active   
  17.     if ( !state.equals(ItemState.ACTIVE) )   
  18.         throw new BusinessException("Auction is not active yet.");   
  19.        
  20.     // Auction still valid   
  21.     if ( item.getEndDate().before( new Date() ) )   
  22.         throw new BusinessException("Can't place new bid, auction already ended.");   
  23.        
  24.     // Create new Bid   
  25.     Bid newBid = new Bid(bidAmount, item, bidder);   
  26.        
  27.     // Place bid for this Item   
  28.     item.getBids().add(newBid);   
  29.     itemDao.update(item);     //  調(diào)用DAO完成持久化操作   
  30.     return newBid;   
  31.     }   
  32. }  


事務(wù)的管理是在ItemManger這一層完成的,ItemManager實現(xiàn)具體的業(yè)務(wù)邏輯。除了常見的和CRUD有關(guān)的簡單邏輯之外,這里還有一個placeBid的邏輯,即項目的競標(biāo)。

以上是一個完整的第一種模型的示例代碼。在這個示例中,placeBid,loadItemById,findAll等等業(yè)務(wù)邏輯統(tǒng)統(tǒng)放在ItemManager中實現(xiàn),而Item只有g(shù)etter/setter方法。

安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢
相關(guān)熱詞搜索:
主站蜘蛛池模板: 湿电电源,静电除尘电源,电捕焦电源-山东仕瑞电气科技有限公司 | 银联POS机_银联微信支付宝刷卡POS机_外币POS机_移动POS机办理安装——谷骐科技 | 览众房车,房车, 房车厂家, 房车价格, 房车图片,, 四驱房车, 皮卡房车, 越野房车, 依维柯房车, 国产房车, 自动挡房车, | 山东优科机械设备有限公司,养鸡设备,湿帘设备,通风降温加湿设备,山东养鸡设备,山东湿帘设备 | 衡水物流网,衡水物流信息网,衡水物流公司,衡水货运专线,衡水专线运输车辆 | 厦门,泉州自助餐上门|生日自助餐|婚礼自助餐|公司聚会自助餐|户外烧烤|冷餐|茶歇外卖配送-福建非选餐饮公司 | 呕吐毒素快速检测仪-黄曲霉毒素测定仪-玉米赤霉烯酮快速检测卡-南京微测生物科技有限公司 | 泊头市特种油泵阀制造有限公司 - 渣油泵,重油泵,沥青泵,高压齿轮泵,煤焦油泵,导热油泵,三螺杆泵,圆弧齿轮泵,不锈钢齿轮泵, | 山东净化车间_净化工程_净化公司-山东海蓝净化装饰工程有限公司 山东金起起重机械有限公司[官网]-金桥银路悬臂吊,金起龙门吊,山东金起起重行吊,单梁起重机 | 南京展览公司|南京会展制作|南京展台搭建|南京展厅设计|企业展览馆 | 精品中文字幕在线观看,粉嫩av一区二区三区,最近中文字幕在线看免费视频,亚洲高清在线观看,日本一区二区视频手机免费看,国产黄色小视频,亚洲高清免费视频,国产精品一区二区欧美视频,亚洲人免费视频,亚洲视频在线观看免费,国产免费高清综合视频,中文字幕永久在线 | 无锡市恒威工业气体有限公司-工业高纯气体_高纯度特种气体 | 箱包定制_广州箱包厂_双肩电脑背包_双肩旅行包_拉杆箱包_商务公文包_包包批发,深圳爱自由,礼品箱包定制,电话:400-0061-690 | 输送机电动滚筒_山东电动滚筒_输送机滚筒_皮带输送机-山东中输输送机械有限公司 | 驾驶扫地机-手推洗地机-吸尘器-清洁设备厂家-荣事达官网 | 卷帘门,防火卷帘,快速门,硬质快速门,提升门,伸缩门,堆积门,车库门维修-烟台捷曼门业有限公司 | 精品中文字幕在线观看,粉嫩av一区二区三区,最近中文字幕在线看免费视频,亚洲高清在线观看,日本一区二区视频手机免费看,国产黄色小视频,亚洲高清免费视频,国产精品一区二区欧美视频,亚洲人免费视频,亚洲视频在线观看免费,国产免费高清综合视频,中文字幕永久在线 | 随州网站建设_随州建站公司_随州SEO优化排名_随州网络公司-随州市金思维网络科技有限公司 | 四川川亚电子科技有限公司| 铝压铸件_铝合金压铸件_铝合金压铸件厂家-安平县长虹压铸厂 | 专业生产安检门-X光机-防爆罐-金属探测门-中警思创军警装备厂家 专业色素炭黑生产厂家,提供各种用途色素炭黑价格-枣庄鑫源化工 专业护工_医院护工_护工陪护_住家护工- 心陪护 | 重庆物流公司,重庆商贸货运,工厂物流,同城冷链物流配送,物流软件租售-重庆协通国际物流有限公司 重庆污水处理设备_废气处理设备_纯净水设备-山艺环保 | 碳化硅脱硫喷嘴,碳化硅烧嘴套,碳化硅耐磨衬套-潍坊致达特种陶瓷有限公司 | 生物除臭_废气处理_玻璃钢风机_布袋除尘_脱硫脱硝_催化燃烧_生物滤池_广东正州环保科技股份有限公司 | 南京文化墙设计公司,南京包装设计制作印刷,南京PPT设计公司,导视制作公司,企业logo设计 | 润滑油展会 沈阳 南京 润滑油 展会 西安 润滑脂 中国国际润滑油 全国润滑油 汽配_中国国际润滑油、脂、养护用品及技术设备展览会 | 徐州恒铭机械设备有限公司_装载机配件_压路机配件_起重机配件_挖掘机配件_配件_徐州恒铭机械设备有限公司 | 样品前处理仪器_光谱仪器_色谱/分析仪器_测量/计量仪器_青岛聚创世纪环保科技有限公司 | 深圳社区邦家政公司-保姆_月嫂_育儿嫂 _早教育婴师_家政钟点工_家政培训_家政加盟- 社区邦优质生活服务 专业、标准化、便捷、安心,一站式家庭服务平台,服务专业有保障 ! | 石墨热场|PECVD石墨舟|碳碳框|燃料电池双极板|半导体石墨|光纤用石墨模具|石墨电极加工|石墨制品|上海弘竣新能源材料有限公司 | 随州市恒利达包装制造有限公司| 洛阳轴承研究所有限公司| 长沙考研-长沙考研辅导学校-长沙领航教育科技有限公司 | 运动控制器_数控系统_廊坊市九盈数控技术公司「官网」 | 智能调光模块,调光系统巨川电气-专注智能照明 | 企业认证-山东环鲁认证管理有限公司 | 皮带输送机-宁津县浩发链条有限公司 | 生态护坡砖_护坡砖_合肥植草砖-巢湖市华林新型建材有限公司 | 企业资质认证-上海翼弘企业咨询管理有限公司 | 校园防欺凌|视频一键式报警器|防霸凌报警柱|停车场语音对讲|商铺联网报警|应急广播音柱|居家养老一键通|盾王可视联网运营中心 | 眉山净源居环保科技有限公司,眉山除甲醛公司,眉山甲醛治理,眉山保洁服务,眉山家政保洁,眉山家电维修 - 眉山净源居环保科技有限公司,眉山除甲醛公司,眉山甲醛治理,眉山保洁服务,眉山家政保洁,眉山家电维修 |