//手槍、士兵、場景設計
class abstractgun
};class handgun : public abstractgun
};class rifle : public abstractgun
};class machinegun : public abstractgun
};class soldier
virtual void killenemy()
virtual ~soldier() {};
protected:
abstractgun* m_gun;
};//當新增新類「玩具槍」的時候,玩具槍殺不死人,無法執行killenemy等。
//如果子類不能完整的實現父類的方法,
//建議斷開父子關係,採用依賴、聚集、組合等關係替代繼承。
class toygun
;//子類可以有自己的個性
class aug : public rifle
virtual void shoot()
};//新增狙擊槍,就要給個狙擊手,我自己設計派生(或許其他情況是不允許的吧)
class snipper : public soldier
};class client
};
設計模式 黎克特制替換原則
設計模式 黎克特制替換原則 物件導向的語言繼承必不可少的,有如下優點 共享,減少建立類的工作量 提高 的重用性 提高 的可擴充套件性 提高 的可擴充套件性 提高產品 的開放性 繼承侵入性 只要繼承,必須擁有父類的內容 降低 的靈活性,子類必須擁有父類的屬性和方法 增強耦合性。黎克特制替換原則,為繼承...
設計模式 (黎克特制替換原則)
黎克特制替換原則的引入 是針對物件導向中的繼承的缺點 乙個原則首先先介紹下它的定義 黎克特制替換原則為繼承定義了規範,下面我用書中看到的例子來說 1.子類必須完全實現父類的方法 首先先定義乙個槍的抽象類 public abstract class abstractgun 實現類的定義,不同的槍枝進行...
設計模式 黎克特制替換原則
設計模式 黎克特制替換原則 oo 中的繼承性的思考和說明 繼承包含這樣一層含義 父類中凡是已經實現好的方法,實際上是在設定規範和契約,雖然它不強制要求所有的子類必須遵循這些契約,但是如果子類對這些已經實現的方法任意修改,就會對整個繼承體系造成破壞。繼承在給程式設計帶來便利的同時,也帶來了弊端。比如使...