成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解.NET類的設計問題

開發 后端
本文將談論的是.NET類的設計問題,包括作者所寫的一個實際的例子,希望對大家有所幫助。

.NET類的問題,比較常見。但是對于設計方面,大家可能接觸得很多,不過具體的問題可能不經意間就略過了。本文將結合作者自己的開發里程,簡述.NET類的設計問題。

雖然搞.NET已經有N年,好像是從C#出生就開始了。可是因為只是業余,只是愛好,都是自摸的,到現在連個.NET類都設計不好,很是郁悶啊!還好,現在知道有博客園這個地方來學習解決問題了。

本人閑著沒事干,于是想設計一個超級平臺來協助處理日常工作、生活、學習、娛樂等各方面的問題,而且想采用最新最快捷的技術,比如WPF、Silerlight、ORM等。于是開始著手,這幾天就碰到了這樣的一個問題,也許我這樣做本身就是問題,只有請各位大俠指點。

現在有一消費類Expense用于消費記賬,其中它需要用到一個賬戶Account來支付。可用于支付帳戶的類型有信用卡CreditCard、現金Cash、支票Check等等。

每次記賬,我需要將所使用的賬戶信息存儲起來以備查詢或統計,于是Expense需要有個Account的屬性。

我這里想了兩個方案,一個是將ExpenseAccount設計為接口或抽象類,而CreditCard等一干賬戶類型都實現或繼承于它。二是設計ExpenseAccount為一個類,而這個Account類有個Category屬性,這個屬性設計為接口或抽象類,然后CreditCard繼承于Category。

我這里最不好解決的問題是將要保存的信息存儲到像MS SQL Server這樣的關系型數據庫中,再有不好解決的問題是如何從數據中取回并生成相應對象的問題。比如,如果用第二種Account表的Category字段存儲的內容是什么呢?如果將它設置成賬戶類型的名稱,如CreditCard,然后子表CreditCard關聯到父表Account倒可解決存儲的問題,可是取回時又成問題了,因為CreditCard的數據無法恢復。

以下是我設計的數據庫實體圖

數據庫實體圖

還有一個類似的問題,就是中國的行政區劃。

中國的區劃比較復雜(整個世界的都是,中國更甚),是一個不規則的組織結構或者樹。

我是這么考慮的:

1.最頂層的是國家級,其屬性有名字、首都、語言、文字、貨幣......

2.接著是省一級的行政單位(省、自治區、直轄市,香港也算這一級,可是有貨幣屬性,文字也不一樣),其屬性有的有省會(直轄市又沒有)、國家...

3.然后是市這一級(市、自治州),屬性有名稱、省、地理坐標...

4.縣一級(縣、市、區、旗、自治縣等等...——復雜吧,名稱很多,中國特色),屬性有名稱、市(這里面還有省直接管轄的,就不好搞了)

5.鄉一級(鄉、鎮、街道......

6.村一級(居委會.....)   

開始我設計了六個類,后來想如果外國人加進來怎么辦(我是設計聯系人的時候要用到地址,還有在GIS地圖里要用到),我所了解的美國好像不是這個結構的。于是我就將行政區設計成一個類District,其中有個屬性為抽象或接口類型DistrictCategory,還有Name(string)、Capital(District)、HigherDistrict,上級)等屬性,然后上面說的6種類型的行政區CountryProvince、City、County等等都繼承自DistrictCategory,它們包含自己獨特的屬性。比如在國家和市這一級里有電話區號,村有郵政編碼等等屬性。行政區之間的關系由其District類型的Higher屬性來確定。

這里我也遇到了一個持久化和取回的問題,都與DistrictCategory類型的Category屬性有關。首先是持久化,這里要設計7個數據庫表,我想省事用O/R框架好像不行,對象存儲時要根據不同的類別存儲到不同的表里。接著是取回的問題,我根據一個DistrictName屬性查詢到了這個相應的記錄,可是我無法知道其相關的屬性到哪個表示類型的表里面去找,至少不能用程序表達。

示例如下:

  1. District china = new District();   
  2. china.Name = "中華人民共和國";   
  3. Country country = new Country();   
  4. country.Abbreviation = "PRC";   
  5. china.Category = country;   
  6. District zhejiang = new District();   
  7. zhejiang.Name = "浙江";   
  8. Province pro = new Province();   
  9. pro.Type = ProvinceType.省;   
  10. zhejiang.Category = pro;   
  11. zhejiang.HigherLevel = china;  

如果要是取回,我是找到了浙江這條記錄,可是程序如何知道

原文標題:類的設計問題

鏈接:http://www.cnblogs.com/hooke/archive/2009/11/04/1595836.html

責任編輯:彭凡 來源: 博客園
相關推薦

2010-01-06 18:27:06

.Net Framew

2009-10-20 17:38:54

VB.NET Comp

2009-04-23 10:33:52

ASP.NET設計思想微軟

2010-01-08 14:56:18

VB.NET類定義

2010-01-21 09:08:53

.NET設計模式

2010-01-05 16:15:05

.NET Framew

2010-01-05 15:43:13

.NET Framew

2009-10-12 09:02:03

SmartRWLock

2009-10-26 09:16:08

BigInteger類

2009-12-18 16:39:59

ADO.NET基礎類

2009-12-28 16:57:40

ADO .NET 類

2023-07-04 08:26:15

2009-11-02 17:32:37

VB.NET抽象類

2009-08-10 14:31:46

ASP.NET組件設計ASP.NET控件生命

2009-10-09 14:10:23

.NET數組

2009-05-21 13:25:50

.NETCountDownLa微軟

2012-03-31 10:01:40

ASP.NET MVC

2023-07-03 08:48:40

Web模塊化設計

2009-08-06 15:56:40

ASP.NET Coo

2023-09-01 07:25:39

領域驅動設計DDD
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www.中文字幕 | 亚洲一区二区av | 亚洲福利一区 | 日韩视频在线观看一区二区 | 国产免费又黄又爽又刺激蜜月al | 日韩中文字幕网 | 蜜桃在线播放 | 一级h片| 中文字幕在线网 | 在线播放中文 | 一级毛片网| 成人小视频在线观看 | 日韩中文一区二区三区 | a网站在线观看 | 天天弄天天操 | 本道综合精品 | 99av成人精品国语自产拍 | 日日草夜夜草 | 美女久久久久久久久 | av网站在线播放 | 免费看国产精品视频 | 99视频精品 | 午夜欧美一区二区三区在线播放 | 韩国av一区二区 | 国产精品18hdxxxⅹ在线 | 国产精品视频中文字幕 | 91xxx在线观看 | 伊人网91| 大香在线伊779 | 玖玖精品 | 久久国产精品-国产精品 | 亚洲一区av | 日本天天操 | 国产亚洲精品久久19p | 日韩网站在线观看 | 国产精品揄拍一区二区 | 久久久久久久久久久福利观看 | 不用播放器看的av | 中文字幕亚洲一区 | 国产区一区 | 伊人天堂网 |