設計模式零(物件導向基礎)

2022-05-03 00:00:08 字數 2198 閱讀 4428

本內容參考大話設計模式記錄

物件:一切事物皆物件。類:對物件進行的抽象。例項:類的乙個具體實體。

方法過載:方法名相同但是引數型別或者個數不同的方法。

物件導向的三大特性:繼承,封裝,多型

繼承:子類繼承父類後具有父類的保護和公有的一些方法,屬性等並且能擴充自己。對於父類的建構函式只能呼叫不能繼承。當物件與物件的關係是is-a時候用繼承,當關係式has-a我們應該用組合或者聚合(橋接模式)。

封裝:乙個類在其內部擁有自己的方法,字段完成一些操作而不需要其他類,內部變化對於外面是不清楚的,只是提供乙個介面。

多型:子代父完成一些操作(用到virtual和override),也就是依賴倒置原則的核心。(也就是呼叫的父類的方法,但是執行的是子類的函式實體),但是有個缺點就是,子類的擴充套件不能使用。

重構:對現有**優化,把重複出現的部分抽取出來。(模板方法模式,提取抽象類等方法)

抽象類:對類的抽象。(類是對物件的抽象,介面是對方法的抽象,**也是對方法的抽象),當我們發現我們建立的類不需要去例項化的時候我們可以把它設計為抽象類,注意的是抽象類必須被子類重寫的,抽象類盡可能的擁有多的共同**,盡量少的資料。

介面:把一些特定的方法或者屬性進行抽象。

介面和抽象類的區別:乙個類可以繼承多個介面,但只能繼承乙個抽象類。抽象類可以給出一些成員的實現,而介面不能。抽象類的抽象成員可以被子類部分實現,而介面需要完全實現。抽象類是對物件的整體抽象,介面是對物件的區域性抽象(方法和屬性)。對於行為跨越不同的類物件的時候我們應該用介面,對於一些相似的物件我們用抽象類。從設計的角度分析,抽象類是從子類中發現公共的部分,泛化出父類,然後子類繼承父類。而介面是根本就不知道子類的存在,方法如何實現還不確定,預先定義。(抽象是自底而上,介面是自頂而下)。

集合:陣列(分配空間固定,易於讀取,不利於更改)。arraylist易於更改,可以新增不同型別的資料(導致它是不安全型別),但是對於資料的操作的時候大量用到了裝箱和拆箱的操作,占用了大量的空間和時間。注意:它的乙個操作將帶動所有的其他成員發生變化。比如我們要連續刪除前2個成員要用:arraylist.remove(0);arraylist.remove(0);而不是arraylist.remove(0);arraylist.remove(1);

泛型:為了解決arraylist的裝箱和拆箱帶來效能上的問題。(我覺得泛型就是通過引數預先給不同的資料先制定需要儲存乙個單位的空間),用ilistlists=new list解決。它的好處在於解決了型別安全和裝箱拆箱操作。

事件與委託:委託是函式的封裝或者說是函式的另外一種表現形式。而事件則是委託的一種特殊形式,委託是一種引用方法的型別,一旦委託分類方法成功,那麼委託和方法具有相同的行為。而事件是說在發生其它類或物件關注的事情時,類或物件可以通過事件通知他們。

下面**展示怎樣在類中建立委託,事件,並且在例項後怎樣給事件賦值(事件的觸發是類內部觸發的,外部只需要給事件賦值就行了,一般在內部觸發先要判斷事件是否為空,然後呼叫)

namespace 動物練習

}//無引數委託事件

class cat

public delegate void catshouteventhandler();

public event catshouteventhandler catshout;

public void shout()

.", name);

if (catshout != null)}}

class mouse

public void run()

快跑!", name);}}

帶引數的事件

namespace 動物練習

}//有引數委託事件

class cat

public delegate void catshouteventhandler(object sender, catshouteventargs args);

public event catshouteventhandler catshout;

public void shout()

.", name);

if (catshout != null)}}

public class catshouteventargs : eventargs

set }}

class mouse

public void run(object sender, catshouteventargs args)

來了,快跑!", args.name, name);}}

}

物件導向設計模式基礎

首先 使用物件導向設計模式能夠使 易維護,可復用,可擴充套件,靈活性好 這是我們需要達到的目標 其次 如果想要達到這樣的目標,就需要在 的設計過程中,遵守以下的原則 顯示簡單的說明 1.開放封閉的原則 盡量對修改關閉,對擴充套件開啟 2.高內聚低耦合的原則 模組內部緊湊,模組之間耦合度較小 3.單一...

設計模式 物件導向基礎

物件導向,object oriented 物件是乙個自包含的實體,用一組可識別的特性和行為來標識。類就是具有相同的屬性和功能的物件的抽象的集合。注意 1.類名稱首字母急著要大些,多個單詞則首個字母大寫 2.物件公開的方法需要用 public 修飾符。補充 例項,就是乙個真實的物件。比如我們都是 人 ...

設計模式 設計模式概述 物件導向基礎

模式名稱 pattern name 助記名,如抽象工廠模式等 問題 problem 描述了應該在何時使用模式 解決方案 solution 效果 consequences 物件導向程式設計由物件組成,物件包括資料和對資料進行操作的過程,過程通常稱為方法或操作。物件在收到客戶的請求 或訊息 後,執行相應...