原版外掛架構缺乏擴充性:使用者需求變更時需修改核心代碼。重構目標——建立團隊統一應用框架,核心庫部署一次,專用產品透過實作介面擴充,GUI 元件共用,達成「高內聚、低耦合、易部署」。
// 所有可連接物件的基礎契約
public interface IConnectable
{
ConnectionResult Connect(object application); // application 為主框架,null 表示自身為主框架
ExtendibleVersionInfo VersionInfo { get; }
void OnDestroy();
void OnLoad();
void Run();
}
public enum ConnectionResult { Connection_Success, Connection_Failed }
public class ExtendibleVersionInfo
{
public string Name { get; }
public int PrimaryVersion { get; }
public int SecondaryVersion { get; }
public int BuildVersion { get; }
public string Copyright { get; }
public string VersionString { get; }
// 建構函式略...
}
// 版本管理介面:支援多版本共存與查詢
public interface IExtendible
{
IConnectable GetLatestVersion();
IConnectable QuerySpecifiedVersion(ExtendibleVersionInfo version);
ExtendibleVersionInfo[] EnumerateVersions();
}
internal class,僅對外公開工廠類別。IExtendible.GetLatestVersion() 取得最新實例,或 EnumerateVersions() 讓使用者選擇版本。