軟件工程--面向對象設計與構造

軟件工程-設計模式

  更多請參考http://www.javashuo.com/article/p-sxmittye-ga.html算法

策略模式

定義一系列算法,將之封裝起來,而且使它們能夠互相替換。該模式使得算法可獨立與客戶而變化。
  • 策略是一個接口,該接口定義了若干個抽象方法
  • 具體策略:是實現策略接口的類,實現了策略接口所定義的抽象方法,即具體算法
  • 適用情景:
    1. 一個類定義了多種行爲,而且這些行爲在這個類的方法中以多個條件語句的形式出現,使用策略模式能夠避免在類中使用大量的條件語句。
    2. 程序的主要類不但願暴露覆雜的、與算法相關的數據結構。
    3. 須要使用一個算法的不一樣變體。

訪問者模式

做用於某對象結構中的各個元素的操做,它使得用戶能夠在不改變各個元素的類的前提下定義做用於這些元素的新操做。
  • 抽象元素:一個抽象類,該類定義了接收訪問者的操做
  • 具體元素:element的子類
  • 抽象訪問者:一個接口,該接口定義操做具體元素的方法
  • 具體訪問者:實現抽象訪問者接口的類
  • 適用情景:
    1. 在一個多對象的集合結構中,相對集合中的對象增長一些新操做。
    2. 須要對集合中的對象進行不少不一樣的而且不相關的操做,而咱們又不想修改對象的類,此時使用訪問者模式,在抽象訪問者接口類中定義一些不一樣的對象操做。

裝飾模式

動態地給對象增長一些額外的職責。功能上裝飾模式比生成子類更靈活。
  • 抽象組件:至關於抽象類,定義了須要進行裝飾的方法。
  • 具體組件:抽象組件的一個子類。
  • 裝飾:抽象組件的一個子類,做爲「裝飾者」的角色,去裝飾具體組件(做爲「被裝飾者」),因此裝飾者須要包含被裝飾者的引用,裝飾者能夠是抽象類也能夠是非抽象類。
  • 具體裝飾:裝飾角色的一個非抽象子類。
  • 適用情景:
    1. 程序但願動態地加強類的某個對象的功能,而又不影響該類的其餘對象。
    2. 採用繼承來加強對象功能不利於系統的擴展和維護。

適配器模式

將一個類的接口轉化爲客戶但願的另一個接口,它使得本來因爲接口不兼容而不能一塊兒工做的那些類可以一塊兒工做。
  • 目標:目標是一個客戶想使用的接口。
  • 被適配者:本來已經存在的接口或抽象類,被適配者須要適配。
  • 適配器:該類實現了目標接口,幷包含有被適配者的引用,對被適配者與目標接口進行適配。
  • 適用情景:如描述

工廠化模式

定義一個用於建立對象的接口,讓子類決定實例化那一個類,即它使一個類的實例化延遲到其子類。
  • 抽象產品:抽象類或接口,定義產品實現的方法。
  • 具體產品:若是抽象產品是抽象類,則具體產品是它的子類;若是抽象產品是接口,則具體產品是實現該接口的類。
  • 構造者:一個接口或抽象類,構造者負責定義一個被稱爲工廠方法的抽象方法,該方法返回具體產品類的實例。
  • 具體構造者:若是構造者是抽象類,則具體構造者是子類;若是構造者是接口,則具體構造者是實現該接口的類。具體構造者重寫工廠方法,使該方法返回具體產品的實例。
  • 適用情景:
    1. 用戶須要一個類的子類的實例,但不但願該類的子類造成耦合
    2. 用戶須要一個類的子類的實例,但用戶不知道該類有哪些子類可用。
    3. 工廠方法使用戶沒必要知道它所使用的對象是如何被建立的,只需知道該對象有哪些方法便可。
相關文章
相關標籤/搜索