目錄抽象工廠模式
總結原始碼
假設乙個手機軟體初始化的應用場景,該軟體支援ios
、android
、windows
等多個作業系統平台,針對不同的作業系統,該軟體提供了不同的操作功能(operation
)類和操作介面(su***ce
)類,並提供相應的工廠類來封裝這些類的初始化過程。軟體要求具有較好的擴充套件性以支援新的作業系統平台
* @description 操作功能抽象類
*/public abstract class operation
/**
* @description android操作功能產品類
*/public class androidoperation extends operation
}
/**
* @description ios操作功能產品類
*/public class iosoperation extends operation
}
/**
* @description 操作功能工廠類(工廠方法模式)
*/public inte***ce operationfactory
/**
* @description android操作功能工廠類
*/public class androidoperationfactory implements operationfactory
}
/**
* @description ios操作功能工廠類
*/public class iosoperationfactory implements operationfactory
}
/**
* @description 工廠方法模式測試類
*/public class test
}
初始化android操作功能
初始化ios操作功能
/**
* @description 操作功能抽象類
*/public abstract class operation
/**
* @description android操作功能產品類
*/public class androidoperation extends operation
}
/**
* @description ios操作功能產品類
*/public class iosoperation extends operation
}
/**
* @description 操作介面抽象類
*/public abstract class su***ce
/**
* @description android操作介面產品類
*/public class androidsu***ce extends su***ce
}
/**
* @description ios操作介面產品類
*/public class iossu***ce extends su***ce
}
/**
* @description 初始化工廠介面:抽象工廠
*/public inte***ce initfactory
/**
* @description android初始化工廠:具體工廠類
*/public class androidinitfactory implements initfactory
@override
public su***ce getsu***ce()
}
/**
* @description ios初始化工廠:具體工廠類
*/public class iosinitfactory implements initfactory
@override
public su***ce getsu***ce()
}
/**
* @description 抽象工廠測試類
* @author coisini
* @date mar 4, 2022
* @version 1.0
*/public class test
}
初始化android操作功能
初始化android操作介面
初始化ios操作功能
初始化ios操作介面
/** * @description properties工具類
* @author coisini
* @date feb 28, 2022
* @version 1.0
*/public class propertiesutil catch (ioexception e)
return value;
}/**
* 根據配置檔案提取類名返回例項物件
* @param filepath
* @param keyword
* @param packagepath
* @return
*/private static object getbean(string filepath, string keyword, string packagepath) catch (exception e)
}/**
* 獲取抽象工廠例項物件
* @return
*/public static object getabstractfactorybean()
}
/**
* @description 抽象工廠測試類
*/public class test
}
1、具體產品在應用層**隔離,無需關心建立細節
2、將乙個系列的產品族統一到一起建立
1、規定了所有可能被建立的產品集合,產品族中擴充套件新的產品困難,需要修改抽象工廠的介面
2、增加了系統的抽象性和理解難度
1、客戶端(應用層)不依賴於產品類例項如何被建立、實現等細節
2、強調一系列相關的產品物件(屬於同一產品族)一起使用建立物件需要大量重複的**
3、提供乙個產品類的庫,所有的產品以同樣的介面出現,從而使客戶端不依賴於具體實現
- end -
- 個人學習筆記 -
設計模式 工廠模式 抽象工廠模式
建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...
抽象工廠模式 常用設計模式 抽象工廠模式
提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。在工廠方法模式中,我們的具體建立者每次使用都只能建立乙個同型別的物件,假如我們現在需要的是多個不同型別的物件,工廠方法就滿足不了需求了。這時我們可以把多個工廠方法組合到乙個類,這就是抽象工廠模式,它就是專門用來建立多個產品,也可以說...
抽象工廠模式 設計模式(九) 抽象工廠模式
提供乙個為建立一組相關或相互依賴物件的介面,且無須指定它們的具體類。它屬於建立型模式。在抽象工廠模式中,每個具體工廠都提供了多個用於建立多種不同型別具體物件的方法,這些不同型別的物件都存在乙個共同的屬性,構成乙個族。上篇文章設計模式 八 工廠方法模式說到工廠方法模式中只考慮某一類產品的生產,例如可樂...