秒懂策略模式 簡單明瞭的例子

2022-08-11 11:57:15 字數 1515 閱讀 2281

1.

策略模式將行為和環境隔離開來,環境角色類負責維持和查詢行為的類,各種類似的邏輯演算法都在各個具體的策略類中進行實現,由於環境和行為隔離開來,所以行為的邏輯變更不會影響到環境和客戶端。

2.uml類圖:

這個模式涉及到三個角色:

環境(context)角色:持有乙個strategy的引用。

抽象策略(strategy)角色:這是乙個抽象角色,通常由乙個介面或抽象類實現。此角色給出所有的具體策略類所需的介面。

3.**結構截圖:(**不多,耐心看完)

4.**如下:

abstract修飾方法就是要求其子類覆蓋(實現)這個方法。呼叫時可以以多型方式呼叫子類覆蓋(實現)後的方法,也就是說抽象方法必須在其子類中實現,除非子類本身也是抽象類。

需要注意:父類是抽象類,其中有抽象方法,那麼子類繼承父類,並把父類中的所有抽象方法都實現(覆蓋)了,子類才有建立物件的例項的能力,否則子類也必須是抽象類。

凡是抽象類,就一定會是某個類的父類!否則,這個抽象類的存在沒有意義,因為抽象類不能被例項化。

既然抽象類一定是某乙個類的父類,所以,這個抽象類一定要有建構函式!這樣,抽象類的子類才能成功例項化。

抽象類也有建構函式,只是,這個建構函式是給子類提供的。所以如果抽象類繼承其他類,那麼抽象類的建構函式也會使用super語句,所以被繼承類也必須有對外提供的建構函式

public

abstract

class

strategy

public class strategyone extendsstrategy 

}public class strategysecond extendsstrategy

}public class strategythird extendsstrategy

}public class strategyfourth extendsstrategy

}

public

class

context

//設定所需策略

public

void

setstrategy(strategy strategy)

//根據設定的策略類返回對應的結果

public

int getresult(int a, int

b) }

public

class

client

}

簡單明瞭的SQL建立語句

1.建立資料庫sql語句 use master goif exists select from sysdatabases where name commonpermission begin select 該資料庫已存在 drop database commonpermission 如果該資料庫已經存...

最簡單明瞭的yield from解釋

def one print one start res yield from two print function get res res return one res deftwo print two start res yield from three print two1 return res...

簡單明瞭 mysql中的limit用法

select from 表名 limit m,n select from table limit offset,rows 1.m代表從m 1條記錄行開始檢索,n代表取出n條資料。m可設為0 如 select from 表名 limit 6,5 表示 從第7條記錄行開始算,取出5條資料 2.值得注意的...