用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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 設計模式、用Delphi描述-->Factory Method模式 (轉)設計模式
- 設計模式、用Delphi描述-->Abstract Factory模式 (轉)設計模式
- Delphi設計模式-Abstract Factory (轉)設計模式
- Java設計模式之工廠模式(Factory)Java設計模式
- 設計模式、用Delphi實現---->Builder模式 (轉)設計模式UI
- 設計模式系列之工廠模式三兄弟(Factory Pattern)設計模式
- C#設計模式系列:工廠方法模式(Factory Method)C#設計模式
- 設計模式、用Delphi實現---->Singleton 模式 (轉)設計模式
- 【圖解設計模式系列】The Abstract Factory Pattern: 抽象工廠模式圖解設計模式抽象
- JAVA設計模式之 工廠方法模式【Factory Method Pattern】Java設計模式
- JAVA設計模式之 抽象工廠模式【Abstract Factory Pattern】Java設計模式抽象
- 設計模式討論之abstract factory篇 (轉)設計模式
- 我所理解的設計模式(C++實現)——抽象工廠模式(Abstract Factory Pattern)設計模式C++抽象
- 我所理解的設計模式(C++實現)——工廠方法模式(Factory Method Pattern)設計模式C++
- JAVA設計模式之 簡單工廠模式【Simple Factory Pattern】Java設計模式
- 設計模式實戰 – 抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- 設計模式實戰 - 抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- Java Q&A: 使用Factory Method模式 (轉)Java模式
- 我所理解的設計模式(C++實現)——簡單工廠模式(Simple Factory Pattern)設計模式C++
- 設計模式-Java實現單例模式設計模式Java單例
- 《設計模式》 - 2. 工廠模式( Factory )設計模式
- 設計模式--工廠模式Factory(建立型)設計模式
- Java設計模式實現之二--策略模式Java設計模式
- Java設計模式系列之單例設計模式Java設計模式單例
- Java設計模式1:設計模式概論Java設計模式
- Selenium4+Python3系列(十一) - Page Factory設計模式Python設計模式
- 設計模式:單例模式的使用和實現(JAVA)設計模式單例Java
- C#基礎系列:委託實現簡單設計模式(1)C#設計模式
- 好程式設計師Java實用教程系列之物件的轉型程式設計師Java物件
- 設計模式--抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- 設計模式--工廠方法模式(Factory Method Pattern)設計模式
- Scala 與設計模式(四):Factory 工廠模式設計模式
- 設計模式之工廠方法模式(FACTORY METHOD)設計模式
- 我工作的那點事--學習《設計模式》例項應用(factory模式)設計模式
- 設計模式(Design Patterns)筆記之一:Abstract Factory (轉)設計模式筆記
- 使用C# (.NET Core) 實現簡單工廠(Simple Factory) 和工廠方法設計模式 (Factory Method Pattern)C#設計模式
- 設計模式 - java程式碼實現單例模式設計模式Java單例
- Java設計模式系列-裝飾器模式Java設計模式