設計模式之用反射機制改進的抽象工廠

2021-07-25 14:15:29 字數 2646 閱讀 5501

有關三種工廠模式的知識,請看我這篇博文

我們直接來看乙個抽象工廠的demo

1.抽象產品類

資料庫增刪改用到的 user表 department表

public

inte***ce iuser

public

inte***ce idepartment

2.實體產品類這裡考慮的兩種不同的資料庫,sqlserver 和 access 兩種資料庫在做增刪改的時候語句會有略微的不同,如果專案要從sqlserver 換到 access 甚至orcle 麻煩就大了。

使用access

public

class

accessdepartment

implements

idepartment

@override

public

void

delete()

}

public

class

accessuser

implements

iuser

@override

public

void

delete()

}

使用sqlserver

public

class

sqlserveruser

implements

iuser

@override

public

void

delete()

}

public

class

sqlserverdepartment

implements

idepartment

public

void

delete()

}

3.抽象工廠

public

inte***ce ifactoty

4.實體工廠

public

class

accessfactory

implements

ifactoty

public iuser createuser()

}

public

class

sqlserve***ctory

implements

ifactoty

@override

public iuser createuser()

}

5.呼叫

public static void main(string args)
很明顯,雖然我們的程式符合了開閉原則,但是程式中例項化的更多的物件。如果我們再加入oracle資料庫,我們要修改 ifactory sqlserve***ctory accessfactory 三個類。下面看用反射機制改進的** 用 refacto***ctory代替以上三個類:首先我們把要操作的資料庫型別,以及資料庫helper所在包名寫入配置檔案中。

這裡我用txt檔案代替配置檔案

}這樣我們用乙個refacto***ctory 類代替了三個類,如果又要加入新的資料庫,我們只需增加抽象產品和實體產品類,再修改配置檔案即可!

呼叫:

refacto***ctory factoty = new refacto***ctory();

java反射機制 工廠設計模式的進化

一 基本使用和 簡單工廠模式 使用步驟 1 建立抽象產品類 定義具體產品的公共介面 2 建立具體產品類 繼承抽象產品類 定義生產的具體產品 3 建立工廠類,根據傳入不同引數從而建立不同具體產品類的例項 4 外界通過呼叫工廠類的方法,傳入不同引數從而建立不同具體產品類的例項public class d...

關於工廠設計模式的問題(反射機制)

首先來寫乙個傳統的工廠 inte ce ifruit class implements ifruit class orange implements ifruit class factory suppresswarnings unchecked public static ifruit getins...

C 設計模式之 抽象工廠模式與反射

定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類 在access中給user表增加一條記錄 在access中根據id得到user表一條記錄 提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類 class department public string id inte ce id...