策略模式 反射

2021-06-19 01:40:48 字數 2494 閱讀 7415

開放-

封閉原則:軟體實體(類、模組、函式等等)應該可以擴充套件,但是不可修改。也就是對於擴充套件開放的,對於更改是封閉的。

學習設計模式的時候對這句話的記憶很深,而且「封裝變化」這句話更是記憶深刻,但是也只是記憶深刻,這次做考試系統的時候是真的深刻體會到了。整個考試系統的變化點就是題型,不同的考試會有不同的題型,不同的題型需要不同的字段。這樣我們就需要把題型的變化封裝起來,當我們新增乙個新的題型的時候,盡量不更改原來的系統。初步的設想是將不同的題型的封裝到不同dll檔案裡面,當需要新增乙個題型的時候只需要匯入乙個

dll檔案

即可,而不影響其他部分。

以上是需求,我們採用的是策略模式

+反射。將各種題型封裝成

dll檔案,這樣就把變化封裝起來。

下面看圖看**:

//小組:提高班-考試系統3.0版-教師端

//說明:試題抽象工廠+反射——策略模式

//建立日期:4-11月-2013 20:15:14

//版本號:

///using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.reflection;

using system.collections;

using system.data;

using system.data.sqlclient;

using examsystemv3.idal ;

//using questionmanagedal;

namespace questionmanagebll

/// ///建立題型表

///

/// 表名

public bool createtableresult(hashtable map)

/// /// 增加一條資料

///

public bool insertquestionresult(hashtable map)

}///

// questionmanagebll.cs

//小組:提高班-考試系統3.0版-教師端

//說明:試題公共類——策略模式

//建立日期:3-11月-2013 20:15:14

//版本號:1.0

///using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.data;

using system.data.sqlclient;

using system.collections;

namespace examsystemv3.idal

///// questionmanagedal.cs

//小組:提高班-考試系統3.0版-教師端

//說明:試題公共類——策略模式

//建立日期:3-11月-2013 20:15:14

//版本號:1.0

///using system;

using system.data;

using system.text;

using system.data.sqlclient;

using maticsoft.dbutility;//please add references

using system.collections;

using examsystemv3.idal ;

namespace questionmanagedal

#region basicmethod

/// /// 根據課程建立選擇題表

///

/// 雜湊表

public override bool createquestiontable(hashtable map)

/// /// 新增一條題庫資訊

///

public override bool insertonequestion(hashtable map)

;int rows = dbhelpersql.executesql(strsql.tostring(), parameters);

if (rows > 0)

else}}

總結:雖然題型不同,但是對題型的操作是一樣的,這樣我們就可以抽象出來乙個 父

類,然後利用反射根據選擇的不同的題型,例項化不同的題型

類。這樣就將題型的變 化

封裝一起,當新增新題型的時候只需要匯入乙個dll檔案即可!

注:

策略模式 反射 解決多重if else if問題

需求 商品有三種折扣價,普通客戶不享受任何優惠,vip客戶享受9折優惠,超級vip客戶享受8折優惠 當沒有用到設計模式時,我們一般會採用下面的方式處理業務 int type 1 if type 1 else if type 2 else if type 3 這樣做的好處是直觀,能以下看懂其中的邏輯關...

模式 策略模式

前言 所有的設計模式都是基於程式設計屆前輩們的不斷實踐得出的解決一類問題中比較有效高效的程式設計方法。策略模式 策略模式用於解決業務中不同場景下統一行為的細微差別問題。策略模式遵循 開閉原則 舉個例子來說,在購物車功能中,結算 的時候會根據使用者的不同級別去打折,那麼打折計算 的這一行為就會有不同演...

策略模式(策略列舉)

首先定義乙個介面 package com.yecc.suanfa.strategy created by yecc on 2020 11 16 19 35 public inte ce strategy 定義三個繼承介面的類 package com.yecc.suanfa.strategy crea...