用Java實現的設計模式系列(1)-Factory (轉)
剛剛將四人幫的設計看完了,總覺得這本書寫得實在難理解,痛苦之時,恰好發現了用來理解設計模式原來是一種最好的方式,可是苦於網上現在只有C++的設計模式實現原始碼,而卻沒有一份完整的Java實現的設計模式原始碼。小弟不才,希望藉此篇文章,讓大蝦們共同努力,整理出一份較為完整且容易理解的用Java實現的設計模式原始碼!
另:CSDN上有沒有一個原始碼的地方,希望最後能將所有原始碼彙總,並打包以提供給各位蟲蟲們。
/**
* Design Pattern In Java
* Name:Factory
* 目的:利用工廠模式建立兩個產品系列Mac和Win
* Mac:MacRam,Mac
* Win:WinRam,WinCpu
* A:abstract
* C:Concret
* Author:blackphoenix
* Modify Date:2002-08-17
*/
/**
* 抽象產品類 Ram Cpu
*/
abstract class AProductRam {
public String getProduct() {
return this+" Product";
}
}
abstract class AProductCpu {
public String getProduct() {
return this+" Product";
}
}
/**
* 具體產品 MacRam,WinRam
*/
class CProductMacRam extends AProductRam {
public String toString() {
return "MacRam";
}
}
class CProductWinRam extends AProductRam {
public String toString() {
return "WinRam";
}
}
/**
* 具體產品 MacCpu,WinCpu
*/
class CProductMacCpu extends AProductCpu {
public String toString() {
return "MacCpu";
}
}
class CProductWinCpu extends AProductCpu {
public String toString() {
return "WinCpu";
}
}
/**
*生成一種新的產品系列時,介面改動的程式碼
*/
/*
class CProductNewRam extends AProductRam {
public String toString() {
return "NewRam";
}
}
class CProductNewCpu extends AProductCpu {
public String toString() {
return "NewCpu";
}
}
*/
/**
* 抽象工廠 AFactory
*/
interface AFactory {
public AProductRam CreateProductRam();
public AProductCpu CreateProductCpu();
}
/**
* 具體工廠 CFactoryMac
* 建立Mac產品系列
× MacRam MacCpu
*/
class CFactoryMac implements AFactory {
public AProductRam CreateProductRam() {
return new CProductMacRam();
}
public AProductCpu CreateProductCpu() {
return new CProductMacCpu();
}
}
/**
* 具體工廠 CFactoryWin
* 建立Win產品系列
× WinRam WinCpu
*/
class CFactoryWin implements AFactory {
public AProductRam CreateProductRam() {
return new CProductWinRam();
}
public AProductCpu CreateProductCpu() {
return new CProductWinCpu();
}
}
/**
* 要生成一種新的產品系列時,對客戶要派發一個新的產品工廠
* 同時要派生出一種新的具體產品
* CFactoryNew
* NewMem,NewCpu
*/
/*
class CFactoryNew implements AFactory {
public AProductRam CreateProductRam() {
return new CProductNewRam();
}
public AProductCpu CreateProductCpu() {
return new CProductNewCpu();
}
}
*/
/**
* 客戶端
* 1.使用FactoryMac建立Mac系列產品:ProductMacRam,ProductMacCpu
× 2.使用FactoryWin建立Win系列產品:ProductWinRam,ProductWinCpu
* 3.只要知道CFactoryMac,CFactoryWin(具體工廠)和
* AProductRam,AProductCpu(抽象產品)即可,至於具體產品的建立
* 細節客戶不用關心
*/
class Factory {
private static void printProduct(String v) {
System.out.println(v);
}
public static void main(String[] args) {
AProductRam ProductMacRam=null,ProductWinRam=null;
AProductCpu ProductMacCpu=null,ProductWinCpu=null;
CFactoryMac FactoryMac=new CFactoryMac();
CFactoryWin FactoryWin=new CFactoryWin();
ProductMacRam=FactoryMac.CreateProductRam();
ProductMacCpu=FactoryMac.CreateProductCpu();
ProductWinRam=FactoryWin.CreateProductRam();
ProductWinCpu=FactoryWin.CreateProductCpu();
printProduct(ProductMacRam.getProduct());
printProduct(ProductMacCpu.getProduct());
printProduct(ProductWinRam.getProduct());
printProduct(ProductWinCpu.getProduct());
/**
*生成一種新的產品系列時,客戶端改動的程式碼
*/
/*
AProductRam ProductNewRam=null;
AProductCpu ProductNewCpu=null;
CFactoryNew FactoryNew=new CFactoryNew();
ProductNewRam=FactoryNew.CreateProductRam();
ProductNewCpu=FactoryNew.CreateProductCpu();
printProduct(ProductNewRam.getProduct());
printProduct(ProductNewCpu.getProduct());
*/
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992872/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 設計模式系列之工廠模式三兄弟(Factory Pattern)設計模式
- 【圖解設計模式系列】The Abstract Factory Pattern: 抽象工廠模式圖解設計模式抽象
- Selenium4+Python3系列(十一) - Page Factory設計模式Python設計模式
- 設計模式實戰 - 抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- 設計模式實戰 – 抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- 《設計模式》 - 2. 工廠模式( Factory )設計模式
- 好程式設計師Java實用教程系列之物件的轉型程式設計師Java物件
- Java設計模式系列之單例設計模式Java設計模式單例
- 設計模式:單例模式的使用和實現(JAVA)設計模式單例Java
- Java設計模式實現之二--策略模式Java設計模式
- 設計模式-抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- 設計模式--抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- 設計模式--工廠方法模式(Factory Method Pattern)設計模式
- 使用C# (.NET Core) 實現簡單工廠(Simple Factory) 和工廠方法設計模式 (Factory Method Pattern)C#設計模式
- 用Python實現設計模式——單例模式Python設計模式單例
- 用Python實現設計模式——工廠模式Python設計模式
- Java設計模式系列-裝飾器模式Java設計模式
- Unity應用架構設計(1)—— MVVM 模式的設計和實施(Part 1)Unity應用架構MVVM模式
- Java設計模式——實現單例模式的七種方式[JZOF]Java設計模式單例
- 【趣味設計模式系列】之【代理模式1--基本原理、實戰及框架應用】設計模式框架
- java 新世界設計模式(1)Java設計模式
- JAVA設計模式 1 設計模式介紹、單例模式的理解與使用Java設計模式單例
- Pipeline模式與Factory+Provider模式的應用模式IDE
- PHP設計模式(一)簡單工廠模式 (Simple Factory For PHP)PHP設計模式
- 轉載-Java設計模式之DecoratorJava設計模式
- 用Python實現設計模式——建造者模式和原型模式Python設計模式原型
- 淺談java之設計模式(1)Java設計模式
- Java設計模式-17、直譯器模式-自定義語言的實現Java設計模式
- Unity應用架構設計(1)—— MVVM 模式的設計和實施(Part 2)Unity應用架構MVVM模式
- 設計模式系列設計模式
- Java單例設計模式的理解與常規實現方式Java單例設計模式
- 使用Builder設計模式實現不變性 - DZone JavaUI設計模式Java
- 設計模式之:享元模式FlyweightPattern的實現設計模式
- 簡單工廠模式(simple factory)及程式碼實現模式
- JAVA物件導向高階:static的應用知識--單例模式 單例設計模式應用場景及好處 單例設計模式的實現方式Java物件單例設計模式
- Java設計模式——模板設計模式Java設計模式
- Java設計模式——觀察者模式的靈活應用Java設計模式
- Go 實現常用設計模式(九)模式Go設計模式
- 設計模式——命令模式實現撤銷設計模式