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

2021-09-26 15:13:34 字數 2847 閱讀 2952

模式名稱(pattern name):助記名,如抽象工廠模式等;

問題(problem):描述了應該在何時使用模式;

解決方案(solution)

效果(consequences)

物件導向程式設計由物件組成,物件包括資料和對資料進行操作的過程,過程通常稱為方法操作。物件在收到客戶請求(或訊息)後,執行相應的操作。

客戶請求是使物件執行操作的***唯一***方法,操作又是物件改變內部資料的**唯一方法。由於這些限制,物件的內部狀態是被封裝

的,它不能被直接訪問,它的表示對於物件外部是不可見的。

物件導向設計最困難的部分是將系統分解成物件集合。因為要考慮許多因素:封裝、粒度、依賴關係、靈活性、效能、演化、復用等等,它們都影響著系統的分解,並且這些因素通常還是互相衝突的。

物件大小和數目。

物件宣告的每乙個操作指定操作名、作為引數的物件和返回值,這就是所謂的操作的型構(signature)

物件操作所定義的所有操作型構的集合被稱為該物件的介面(inte***ce)

**型別(type)**是用來標識特定介面的乙個名字:

動態繫結(dynamic binding)

設計模式

例項化

類繼承(class inheritance)

抽象類(abstract class)

混入類(mixin class)

類繼承與介面繼承的比較

針對介面程式設計,而不是針對實現程式設計物件導向設計的第乙個原則);

理解**物件、介面、類和繼承之類的概念對大多數人來說並不難,問題的關鍵在於如何運用它們寫出靈活的、可復用的

軟體。設計模式將告訴你怎樣去做。

物件導向系統中功能復用的兩種最常用的技術是類繼承物件組合(object composition)

類繼承

物件組合

因此:優先使用物件組合,而不是類繼承物件導向設計的第二個原則);

委託delegation) 是一種組合方法,它使組合具有與繼承同樣的復用能力;

另一種功能復用技術(並非嚴格的物件導向技術)是引數化型別(parameterized type),也就是類屬(generi)或模板(templates)(c++)。

下面列舉一些導致重新設計的一般原因,以及解決這些問題的設計模式:

原因解決

通過顯示地指定乙個類來建立物件

abstract factory

factory method

prototype

對特殊操作的依賴

chain of responsibility

command

對硬體和軟體平台的依賴

abstract factory

bridge

對物件表示或實現的依賴

abstract factory

bridge

memento

proxy

演算法依賴

builder

iterator

strategy

template method

visitor

緊耦合abstract factory

command

facade

mediator

observer

chain of responsibility

通過生成子類來擴充套件功能

bridge

chain of responsibility

composite

decorator

observer

strategy

不能方便地對類進行修改

[1]《設計模式:可復用物件導向軟體的基礎》

[2]《大話設計模式》

物件導向設計模式概述

簡單的說是相對與面向過程來說的,就是將資料與方法封裝在一起,作為物件。然後物件自己去實現具體細節。就是指在程式設計時,將程式的內部細節 屬性,方法 隱藏起來,只公開介面,使之成為乙個抽象的整體,即類。其隱藏和公開的動作通過訪問控制關鍵字來控制。物件導向計算始於這個基本概念,即現實世界可以被描繪成一系...

設計模式 物件導向的設計原則概述

對於物件導向軟體系統的設計而言,在支援可維護性的同時,提高系統的可復用性是乙個至關重要的問題,如何同時提高乙個軟體系統的可維護性和可復用性是物件導向設計需要解決的核心問題之一。在物件導向設計中,可維護性的復用是以設計原則為基礎的。每乙個原則都蘊含一些物件導向設計的思想,可以從不同的角度提公升乙個軟體...

物件導向 設計模式

提到設計模式,不得不感謝gof gang of four,四人組 他們1995年出版的 設計模式 一書,第一次將設計模式提公升到理論高度,並將之規範化。書中一共總結了23種基本的設計模式。而這23中設計模式幾乎涵蓋了物件導向設計過程中所有問題的解決方案。書中提到的23種設計模式分別是 1.單例模式 ...