有關三種工廠模式的知識,請看我這篇博文
我們直接來看乙個抽象工廠的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...