簡單工廠模式 (Simple Factory Pattern):
定義一個工廠類,它可以根據參數的不同返回不同類的實例,被創建的實例通常都具有共同的父類。
在簡單工廠模式中用於創建實例的方法通常是靜態(static)方法,因此又被稱為靜態工廠方法(Static Factory Method)模式
要點:如果需要什麼,只需要傳入一個正確的參數,就可以獲取所需要的對象,而無須知道其創建細節。
用代碼來實現就是:
簡單工廠模式包含以下3個角色:
Factory(工廠角色)
Product(抽象產品角色)
ConcreteProduct(具體產品角色)
//典型的抽象產品類代碼:
abstract class Product { //所有產品類的公共業務方法 public void MethodSame() { //公共方法的實現 } //聲明抽象業務方法 public abstract void MethodDiff(); }
//典型的具體產品類代碼: class ConcreteProductA : Product { //實現業務方法 public override void MethodDiff() { //業務方法的實現 } }
//典型的工廠類代碼: class Factory { //靜態工廠方法 public static Product GetProduct(string arg) { Product product = null; if (arg.Equals("A")) { product = new ConcreteProductA(); //初始化設置product } else if (arg.Equals("B")) { product = new ConcreteProductB(); //初始化設置product } return product; } }
//客戶端代碼: class Program { static void Main(string[] args) { Product product; product = Factory.GetProduct("A"); //通過工廠類創建產品對象 product.MethodSame(); product.MethodDiff(); } }
//兩個類A和B之間的關系應該僅僅是A創建B或者是A使用B,而不能兩種關系都有。將對象的創建和使用分離,使得系統更加符合單一職責原則,有利於對功能的復用和系統的維護。
單例模式 (singleton pattern):
即一個類只有一個實例化對象,並提供一個全局訪問點來訪問這個實例。
1.該類只能有一個實例。
2.必須自行創建這個實例。
3.必須自行向整個系統提供這個實例。
單例模式的結構:
單例模式的實現方式: 1.私有構造函數 2.靜態私有成員變量(自身類型) 3.靜態公有的工廠方法
// 單例模式的實現方式
class Singleton { private static Singleton instance=null; //靜態私有成員變量 //私有構造函數 private Singleton() { } //靜態公有工廠方法,返回唯一實例 public static Singleton GetInstance() { if(instance==null) instance=new Singleton(); return instance; } }