fancydeepin
毋意,毋必,毋固,毋我。
BlogJava
首頁
新隨筆
聯系
聚合
管理
隨筆-126 評論-247 文章-5 trackbacks-0
java 工廠方法模式
工廠方法模式
又稱為
多態性工廠模式
或
虛擬構造子模式
;與簡單工廠模式不同,在工廠方法模式中,核心的工廠類不再負責所有具體產品實例的創建,
而僅僅是需要負責給出具體工廠子類必須實現的接口,讓工廠子類去負責具體產品實例的創建。
工廠方法模式的一般性結構是:
與
簡單工廠模式
類似的,下面使用工廠方法模式
來模擬一個簡單的加減乘除的計算器
:
工廠方法模式結構示意圖:
共同運算接口:Operation.java
package
pattern.factory.method;
/**
* -----------------------------------------
* @描述 運算接口
* @作者 fancy
* @郵箱 fancydeepin@yeah.net
* @日期 2012-7-30 <p>
* -----------------------------------------
*/
public
interface
Operation
{
/**
* <B>方法描述:</B>
* <p style="margin-left:20px;color:#A52A2A;">
* 計算兩個操作數的運算值
*
@param
operand1 <span style="color: #008080;"> 操作數1 </span>
*
@param
operand2 <span style="color: #008080;"> 操作數2 </span>
*
@return
<span style="color: #008080;"> 返回兩個操作數的運算值 </span>
*/
public
double
operate(Number operand1, Number operand2);
}
加法實現類:OperationAdd.java
package
pattern.factory.method;
/**
* -----------------------------------------
* @描述 加法實現類
* @作者 fancy
* @郵箱 fancydeepin@yeah.net
* @日期 2012-7-30 <p>
* -----------------------------------------
*/
public
class
OperationAdd
implements
Operation
{
@Override
public
double
operate(Number operand1, Number operand2)
{
return
operand1.doubleValue()
+
operand2.doubleValue();
}
}
減法實現類:OperationSubtract.java
package
pattern.factory.method;
/**
* -----------------------------------------
* @描述 減法實現類
* @作者 fancy
* @郵箱 fancydeepin@yeah.net
* @日期 2012-7-30 <p>
* -----------------------------------------
*/
public
class
OperationSubtract
implements
Operation
{
@Override
public
double
operate(Number operand1, Number operand2)
{
return
operand1.doubleValue()
-
operand2.doubleValue();
}
}
乘法實現類:OperationMultiply.java
package
pattern.factory.method;
/**
* -----------------------------------------
* @描述 乘法實現類
* @作者 fancy
* @郵箱 fancydeepin@yeah.net
* @日期 2012-7-30 <p>
* -----------------------------------------
*/
public
class
OperationMultiply
implements
Operation
{
@Override
public
double
operate(Number operand1, Number operand2)
{
return
operand1.doubleValue()
*
operand2.doubleValue();
}
}
除法實現類:OperationDivision.java
package
pattern.factory.method;
/**
* -----------------------------------------
* @描述 除法實現類
* @作者 fancy
* @郵箱 fancydeepin@yeah.net
* @日期 2012-7-30 <p>
* -----------------------------------------
*/
public
class
OperationDivision
implements
Operation
{
@Override
public
double
operate(Number operand1, Number operand2)
{
try
{
if
(operand2.doubleValue()
==
0.0
)
{
throw
new
Exception(
"
警告:被除數不能為0
"
);
}
else
{
return
operand1.doubleValue()
/
operand2.doubleValue();
}
}
catch
(Exception e)
{e.printStackTrace();}
return
0
;
}
}
抽象工廠接口:OperationCreator.java
package
pattern.factory.method;
/**
* -----------------------------------------
* @描述 抽象工廠接口
* @作者 fancy
* @郵箱 fancydeepin@yeah.net
* @日期 2012-7-30 <p>
* -----------------------------------------
*/
public
interface
OperationCreator
{
/**
* <B>方法描述:</B>
* <p style="margin-left:20px;color:#A52A2A;">
* 獲取運算實例對象
*
@return
<span style="color: #008080;"> 返回運算實例對象 </span>
*/
public
Operation getInstance();
}
加法創造器:CreatorAdd.java
package
pattern.factory.method;
/**
* -----------------------------------------
* @描述 加法
* @作者 fancy
* @郵箱 fancydeepin@yeah.net
* @日期 2012-7-30 <p>
* -----------------------------------------
*/
public
class
CreatorAdd
implements
OperationCreator
{
@Override
public
Operation getInstance()
{
return
new
OperationAdd();
}
}
減法創造器:CreatorSubtract.java
package
pattern.factory.method;
/**
* -----------------------------------------
* @描述 減法
* @作者 fancy
* @郵箱 fancydeepin@yeah.net
* @日期 2012-7-30 <p>
* -----------------------------------------
*/
public
class
CreatorSubtract
implements
OperationCreator
{
@Override
public
Operation getInstance()
{
return
new
OperationSubtract();
}
}
乘法創造器:CreatorMultiply.java
package
pattern.factory.method;
/**
* -----------------------------------------
* @描述 乘法
* @作者 fancy
* @郵箱 fancydeepin@yeah.net
* @日期 2012-7-30 <p>
* -----------------------------------------
*/
public
class
CreatorMultiply
implements
OperationCreator
{
@Override
public
Operation getInstance()
{
return
new
OperationMultiply();
}
}
除法創造器:CreatorDivision.java
package
pattern.factory.method;
/**
* -----------------------------------------
* @描述 除法
* @作者 fancy
* @郵箱 fancydeepin@yeah.net
* @日期 2012-7-30 <p>
* -----------------------------------------
*/
public
class
CreatorDivision
implements
OperationCreator
{
@Override
public
Operation getInstance()
{
return
new
OperationDivision();
}
}
客戶端測試類:Client.java
package
pattern.factory.method;
/**
* -----------------------------------------
* @描述 客戶端測試類
* @作者 fancy
* @郵箱 fancydeepin@yeah.net
* @日期 2012-7-30 <p>
* -----------------------------------------
*/
public
class
Client
{
private
static
Operation operation;
private
static
OperationCreator operationCreator;
public
static
void
main(String[] args)
{
operationCreator
=
new
CreatorMultiply();
operation
=
operationCreator.getInstance();
System.out.println(operation.operate(
4
,
2.5
));
operationCreator
=
new
CreatorDivision();
operation
=
operationCreator.getInstance();
System.out.println(operation.operate(
40
,
2.5
));
System.out.println(operation.operate(
40
,
0
));
}
}
后臺打印輸出結果:
10.0
16.0
java.lang.Exception
: 警告:被除數不能為0
at pattern.factory.method.OperationDivision.operate(
OperationDivision.java:
16
)
at pattern.factory.method.Client.main(
Client.java:
23
)
posted on 2012-07-30 17:43
fancydeepin
閱讀(1910)
評論(0)
編輯
收藏
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
github
個人主頁
beanutil
jutil
jexcel
orc
隨筆分類
(8)
junit
maven(8)
隨筆檔案
(104)
2015年6月 (8)
2015年2月 (1)
2015年1月 (1)
2014年9月 (1)
2014年8月 (3)
2014年6月 (10)
2014年5月 (3)
2014年3月 (5)
2013年10月 (1)
2013年9月 (2)
2013年4月 (1)
2013年3月 (2)
2013年2月 (11)
2012年11月 (3)
2012年10月 (14)
2012年8月 (15)
2012年7月 (13)
2012年6月 (10)
最新隨筆
1.?maven 為測試環境、生產環境等不同環境打包
2.?maven 多模塊項目
3.?nexus 搭建 maven 私服
4.?maven 鏡像
5.?maven jetty 插件使用
6.?maven jdk 版本配置
7.?eclipse maven plugin 插件 安裝 和 配置
8.?maven 安裝
9.?ORCP : 從數據庫表到 java 對象生成的 eclipse 插件
10.?jexcel 讀寫EXCEL
11.?linux 系列
12.?spring mvc(2):請求地址映射(@RequestMapping)
13.?spring mvc(1):基礎入門
14.?Java 驗證碼、二維碼
15.?GXT —— TreePanel 組件(一)
搜索
積分與排名
積分 - 1461417
排名 - 15
最新評論
1.?re: Maven 手動添加 JAR 包到本地倉庫[未登錄]
剛安裝好的maven,倉庫里沒有jar包,如何添加jar包呢?
--Firefly
2.?re: java 建造者模式(Builder)
多謝,講的很清楚
--Nimo
3.?re: Maven 手動添加 JAR 包到本地倉庫
很好很強大, 完美的解決了我的問題。。。
--klose
4.?re: eclipse maven plugin 插件 安裝 和 配置
@fancydeepin
鏈接還是失效了啊
--菜鳥一號
5.?re: Maven 手動添加 JAR 包到本地倉庫[未登錄]
@呼吸~
你好,請問,怎么設置代理呢?
--paul
閱讀排行榜
1.?eclipse maven plugin 插件 安裝 和 配置(325792)
2.?Maven 手動添加 JAR 包到本地倉庫(199724)
3.?Lombok 安裝、入門 - 消除冗長的 java 代碼(154841)
4.?java 異常捕捉 ( try catch finally ) 你真的掌握了嗎?(70175)
5.?maven jetty 插件使用(49084)
6.?JSP/Servlet 工作原理(43123)
7.?maven jdk 版本配置(40994)
8.?spring mvc(2):請求地址映射(@RequestMapping)(39572)
9.?二叉樹的深度優先遍歷與廣度優先遍歷 [ C++ 實現 ](31255)
10.?maven 多模塊項目(27896)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 fancydeepin
主站蜘蛛池模板:
亚洲视频在线免费
|
国产亚洲精品美女久久久久
|
亚洲精品视频免费观看
|
亚州免费一级毛片
|
a毛看片免费观看视频
|
日本亚洲高清乱码中文在线观看
|
亚洲高清乱码午夜电影网
|
亚洲精品无码不卡
|
久久亚洲国产精品123区
|
国产高清在线精品免费软件
|
五月婷婷综合免费
|
香港a毛片免费观看
|
a级片在线免费看
|
国产黄色片免费看
|
一个人晚上在线观看的免费视频
|
综合偷自拍亚洲乱中文字幕
|
性生交片免费无码看人
|
青柠影视在线观看免费高清
|
h视频在线观看免费
|
成年免费a级毛片
|
免费VA在线观看无码
|
国产99久久亚洲综合精品
|
亚洲第一区精品观看
|
国产精品jizz在线观看免费
|
好大好硬好爽免费视频
|
www.黄色免费网站
|
免费a级毛片无码a∨蜜芽试看
|
精品国产污污免费网站aⅴ
|
亚洲国产精品婷婷久久
|
亚洲成人免费在线
|
亚洲综合精品一二三区在线
|
亚洲免费在线视频
|
亚洲福利一区二区三区
|
亚洲国产av一区二区三区丶
|
亚洲午夜国产精品
|
亚洲中文字幕日本无线码
|
jiz zz在亚洲
|
在线观看亚洲网站
|
无码 免费 国产在线观看91
|
国产高潮流白浆喷水免费A片
|
国产无遮挡色视频免费观看性色
|