大家覺得哪種封裝更好

來源:互聯網
上載者:User

     DuDu借首頁一用。。。希望不要把這個貼移走了,我想知道下大家的想法如何。多謝了。

    小弟看到有的持久層架構是把實體類操作的介面放在每個實體類中,比如ActiveRecode。假設要對Order類型的實體物件和User類型實體物件進行修改操作,代碼就像這麼寫:

    Order.Update(_orderObj);    //假設前面已經聲明一個Order類型對象_orderObj
    User.Update(_userObj);   //假設前面已經聲明一個User類型對象_userObj

    而有的持久層架構是把操作介面放在一個公用的持久層類中,同樣假設要對Order類型對象和User類型實體物件進性修改操作,代碼就像這麼寫:

    DataProvider<Order>.Update(_orderObj);    //假設前面已經聲明一個Order類型對象_orderObj
    DataProvider<User>.Update(_userObj);    //假設前面已經聲明一個User類型對象_userObj

    我個人認為把操作放在實體類裡代碼可以更直觀,但是感覺又有些職責越界了,似乎類似這些操作不是實體類應該具有的。但是又很難下一個定論,不知道部落格園的各位大哥是怎麼認為的。希望聽聽大家的意見。

    另外從上篇文章《輕量級持久層架構的討論》各位大哥的踴躍發言讓我對我的持久層架構又有了新想法。

    henry兄提出可以用CodeDom代替反射以提高效率,並且附上了他的文章《利用CodeDom來解決反射效能問題》,從中我獲得了一些靈感。我可以使用CodeDom把用於動態產生Sql語句與為實體物件賦值的代碼產生在記憶體中,這樣我就可以抽象出一個通用的DataProvider並且又不會因為使用反射而影響系統整體執行效率。關於這一點大家有什麼看法和意見也可以繼續提出。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.