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
閱讀(1911)
評論(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 組件(一)
搜索
積分與排名
積分 - 1461450
排名 - 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 代碼(154842)
4.?java 異常捕捉 ( try catch finally ) 你真的掌握了嗎?(70175)
5.?maven jetty 插件使用(49085)
6.?JSP/Servlet 工作原理(43123)
7.?maven jdk 版本配置(40994)
8.?spring mvc(2):請求地址映射(@RequestMapping)(39572)
9.?二叉樹的深度優先遍歷與廣度優先遍歷 [ C++ 實現 ](31256)
10.?maven 多模塊項目(27896)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 fancydeepin
主站蜘蛛池模板:
成人妇女免费播放久久久
|
182tv免费观看在线视频
|
亚洲处破女AV日韩精品
|
1000部夫妻午夜免费
|
亚洲欧美日韩一区二区三区在线
|
亚洲乱妇熟女爽到高潮的片
|
www.亚洲精品.com
|
精品无码人妻一区二区免费蜜桃
|
亚洲日韩精品无码AV海量
|
久久亚洲国产成人精品无码区
|
最近2022中文字幕免费视频
|
国产成人精品日本亚洲语音
|
亚洲va久久久噜噜噜久久
|
AV免费网址在线观看
|
97在线免费视频
|
亚洲人成色在线观看
|
久久精品亚洲一区二区
|
国内一级一级毛片a免费
|
华人在线精品免费观看
|
久久精品国产亚洲一区二区
|
成人毛片免费观看
|
国产激情免费视频在线观看
|
羞羞网站免费观看
|
亚洲精品高清国产麻豆专区
|
中文字幕亚洲综合久久男男
|
国内免费高清在线观看
|
日韩精品久久久久久免费
|
瑟瑟网站免费网站入口
|
亚洲私人无码综合久久网
|
亚洲五月激情综合图片区
|
亚洲人妻av伦理
|
日本免费精品一区二区三区
|
亚洲av永久无码精品三区在线4
|
青青青免费国产在线视频小草
|
中文字幕免费在线播放
|
亚洲aⅴ无码专区在线观看春色
|
成年女人18级毛片毛片免费
|
国产香蕉九九久久精品免费
|
国产免费无码一区二区
|
一级人做人爰a全过程免费视频
|
亚洲成av人在线观看网站
|