<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經轉移至github,大家請訪問 http://qaseven.github.io/

    快速提升MySQL可擴展性的五大絕招

    快速提升MySQL可擴展性的五大絕招

    我對抽象類和接口的理解

    今天公司組織培訓。講解到抽象類和接口這里的時候。好像有同事不太明白。(請允許我自作多情一下!)

      鑒于我自己對這部分也不是掌握的很透徹。所以發個博文上來,一是記錄一下。二是希望還不明白的朋友在閱讀完本文之后能有個了解。

      新手,如有不當之處,請多多包涵!

      MSDN:抽象類是從子類發現了公共的東西,泛化(也可以說把公共的東西單獨提取出來)出父類,然后子類繼承父類,而接口是根本不知道子類的存在,方法如何實現還不確定,預先定義的

      有一個人,他叫王麻子,那年,他生了個兒子,起名叫 王三。這個時候用程序來描述就是他和他老婆創建了一個對象 ,代碼如下:

    public class WangSan
        {
            string FirstName;
            string Sex;
            void CanDo()
            {
                Console.WriteLine("我是王三,我會畫畫");
            }
        }

      王三有 姓、性別、和一個能力,他會畫畫。

      又過了一年,王麻子和他老婆又生了個孩子,起名叫 王四,用程序來說,他們倆又創建了一個對象

    public class WangSi
        {
            string FirstName;
            string Sex;
            void CanDo()
            {
                Console.WriteLine("我是王四,我會唱歌");
            }
        }

      王四也有 姓、性別和一個能力,他會唱歌

      假如一下。假如他們是印度人,對計劃生育沒什么限制,他們每隔幾年都會再生個孩子出來。這樣的話。如果要用程序來描述起來豈不是很麻煩,所以這個時候我們應該考慮對代碼進行重構,提取共同的部分,也就是姓名、性別和一個能力

      如下:

    public abstract class Son
        {
            protected string FirstName;
            protected string Sex;
        }

      因為他們都是王麻子的孩子,咱們假設一下,假設由于他們都是王麻子的孩子,所以他們必須 姓王、有性別,所以這個 基類 Son 就必須聲明為  abstract 的(創建就為被繼承)。就是說凡是 王麻子的孩子,都必須繼承自 Son 這個基類,因為他們都有王麻子的一些特性和自己的特性,

      比如:

    public class WangSan:Son
        {
        }

      我們不必在 WangSan 這個類中寫任何代碼,因為他是王麻子的孩子,所以他有 姓 和 性別。。在New WangSan 這個對象的時候。他就自動的有了 FirstName Sex。這些屬性。

    又假如,由于王麻子是個全能人才。所以他的孩子必須會一項技術,比如游泳或者 唱歌。這個時候 基類就可以修改一下:

    public abstract class Son
        {
           protected string Name;
           protected string Sex;
            /// <summary>
            /// 抽象類中的抽象方法,在子類中必須自行實現
            /// </summary>
            public abstract void CanDO();
        }

      添加了 CanDo 的抽象方法。 這樣 當 王三 這個對象一被創建,他就必須繼承 Son 這個類(他必須是王麻子的兒子,莫非兩口子生的孩子是別人的??)...而又由于Son 中有個抽象的方法 CanDo. 所以。王三 他必須 得有一項技術。如果不實現 CanDo .編譯不通過(你不實現,就不能說明你是我孩子,以后我對你不好!)

    public class WangSan:Son
        {
            public override void CanDO()
            {
                Console.WriteLine("我是王三,王麻子的孩子,我必須有一個擅長,那我選擇唱歌");
            }
        }

      這樣。王三也必須會一項長處了!!

      王四也是一樣。只要他是 王麻子的兒子。他就必須實現 CanDo 方法,并且有FirstName Sex屬性

      又假如有一天,王麻子偷師學藝,學會水上漂。但是他不知道誰愿意學,又不想強迫孩子們。所以他讓孩子們自己決定。他定義了一個接口(發布了一個規范) IShuiShangPiao

    interface IShuiShangPiao {
            void CanFly();
        }

      誰想學。就來我這里報道。結果王武想學。所以王武來報道了(程序解釋就是王武實現這個接口)

    public class WangWU : Son, IShuiShangPiao
        {
            public override void CanDO()
            {
                throw new NotImplementedException();
            }
            /// <summary>
            /// 實現接口(報道),老爸就教我水上漂
            /// </summary>
            public void CanFly()
            {
                throw new NotImplementedException();
            }
        }

      回到我們軟件開發當中,假設以上類是我們程序中實現的一項功能,假如某一天,我們發現(或者客戶要求):凡是王麻子的孩子都必須會英語,這個時候,我們就僅僅只需要在 Son 這個類中 增加一個會說英語的方法。他的孩子們就都會說英語了。如果不采用繼承的話。假設王麻子有1萬個孩子,那就得修改一萬個類,很累。。。。

      以上就是我個人針對 抽象類和 接口的理解,如有不當之處,敬請提出!

      程序需要慢慢重構,這個我當時理解起來也非常不容易。多練習,多思考就會豁然開朗!

      但是切記,千萬不要為了設計而設計。造成過度設計會很糟糕的。。。就好像我們設計數據庫,雖然有3大范式,但是有時候業務迫使我們不得不違背。。。。

      以上!

      希望對這部分不明白的朋友通過本文能對這部分知識有個進一步的了解。同時希望各位的技術一天牛比一天!!

    posted on 2011-11-08 15:54 順其自然EVO 閱讀(137) 評論(0)  編輯  收藏

    <2011年11月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    導航

    統計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲AV综合色区无码一区| 国产一级高清视频免费看| 亚洲成av人影院| 精品一区二区三区免费观看| 亚洲国产成人a精品不卡在线| 国产亚洲男人的天堂在线观看| 国产大片免费观看中文字幕| 亚洲AV永久无码精品网站在线观看 | 免费鲁丝片一级在线观看| 亚洲天堂免费在线| 午夜一区二区免费视频| 亚洲色大成网站WWW国产| 久久国产免费观看精品| 久热综合在线亚洲精品| 无码人妻一区二区三区免费n鬼沢| 亚洲av一综合av一区| 91免费国产精品| 亚洲一区二区三区高清不卡| 日本免费无遮挡吸乳视频电影| 激情无码亚洲一区二区三区 | 欧洲人成在线免费| 91嫩草私人成人亚洲影院| 国产成人福利免费视频| 亚洲乱码无人区卡1卡2卡3| 男人的天堂亚洲一区二区三区 | 亚洲午夜无码久久久久| 深夜a级毛片免费无码| 日韩免费视频播放| 人人爽人人爽人人片A免费| 国产∨亚洲V天堂无码久久久| 免费在线观看h片| 豆国产96在线|亚洲| 亚洲精品无码乱码成人| 免费H网站在线观看的| 亚洲人成网站日本片| 91网站免费观看| 高潮内射免费看片| 亚洲视频免费在线播放| 免费日韩在线视频| 精品免费tv久久久久久久| 亚洲人成网站999久久久综合|