成人免费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種類型的行政區CountryProvinceCityCounty等等都繼承自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-05 16:15:05

.NET Framew

2010-01-08 14:56:18

VB.NET類定義

2010-01-21 09:08:53

.NET設計模式

2010-01-05 15:43:13

.NET Framew

2009-10-26 09:16:08

BigInteger類

2009-10-12 09:02:03

SmartRWLock

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-08-06 15:56:40

ASP.NET Coo

2012-03-31 10:01:40

ASP.NET MVC

2023-07-03 08:48:40

Web模塊化設計

2009-05-21 13:25:50

.NETCountDownLa微軟

2023-09-01 07:25:39

領域驅動設計DDD
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩一区二区三区在线观看 | 精品九九九| 日本三级在线 | 欧美高清视频在线观看 | 亚洲综合久久久 | 日本三级网站在线观看 | av黄色网 | 成人午夜视频在线观看 | 日本在线观看网址 | 国产欧美精品一区二区三区 | 亚洲综合小视频 | 正在播放国产精品 | 日韩中文字幕网 | www.av在线| 久久er99热精品一区二区 | av黄色在线 | 久久综合影院 | 大香网伊人| 久久精品av麻豆的观看方式 | 91免费看片 | 精品真实国产乱文在线 | 亚洲欧美日韩精品久久亚洲区 | 福利社午夜影院 | 日韩综合在线视频 | 国产综合精品一区二区三区 | 精品一区二区久久 | av一区在线观看 | 国内自拍偷拍视频 | 久久精品国产一区二区三区不卡 | 欧美日韩不卡合集视频 | 国产视频中文字幕在线观看 | 日日操日日舔 | 爱爱小视频| 欧美精品久久 | 最新中文字幕在线 | 欧美视频网 | av在线免费观看网站 | 国产欧美久久一区二区三区 | 国产真实乱对白精彩久久小说 | 亚洲精品电影在线观看 | 国产精品欧美一区二区 |