java設(shè)計模式之簡單工廠模式
在編寫一個計算器程序時,可以將業(yè)務(wù)邏輯和顯示分離,業(yè)務(wù)邏輯封裝為一個類(封裝);如果要新添加一種運算,可以先創(chuàng)建一個Operation的基類,然后各種運算從Operation類繼承,并實現(xiàn)GetResult()虛函數(shù),這時添加新的運算只需要派生一個新的類,即不需要之前的運算參與編譯。如何讓計算器知道我是希望使用哪種運算呢?應(yīng)該考慮單獨的類來做這個創(chuàng)造實例的過程,這就是工廠。創(chuàng)建一個OperationFactory類,傳入?yún)?shù),函數(shù)createOperate就可以實例化出合適的對象。

Java代碼如下:
public class OperationFactory {
public static abstract class Operation
{
private double _numberA = 0;
private double _numberB = 0;
public double get_numberA() {
return _numberA;
}
public void set_numberA(double _numberA) {
this._numberA = _numberA;
}
public double get_numberB() {
return _numberB;
}
public void set_numberB(double _numberB) {
this._numberB = _numberB;
}
abstract double GetResult();
// TODO Auto-generated constructor stub
}
public static class OperationAdd extends Operation
{
double GetResult()
{
double result = get_numberA() + get_numberB();
return result;
}
}
public static class OperationSub extends Operation
{
double GetResult() {
double result = get_numberA() - get_numberB();
return result;
}
}
public static Operation createOperate(String operate){
Operation oper = null;
if (operate.equals("+")) {
oper = new OperationAdd();
}
else if (operate.equals("-")) {
oper = new OperationSub();
}
return oper;
}
public static void main(String[] args) {
Operation oper;
oper = OperationFactory.createOperate("+");
oper.set_numberA(1);
oper.set_numberB(2);
double result = oper.GetResult();
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java生成隨機數(shù)之Random與ThreadLocalRandom性能比較詳解
大家項目中如果有生成隨機數(shù)的需求,我想大多都會選擇使用Random來實現(xiàn),它內(nèi)部使用了CAS來實現(xiàn)。?實際上,JDK1.7之后,提供了另外一個生成隨機數(shù)的類ThreadLocalRandom,那么他們二者之間的性能是怎么樣的呢?本文就來詳細(xì)說說2022-12-12
java使用http實現(xiàn)文件下載學(xué)習(xí)示例
這篇文章主要介紹了java使用http實現(xiàn)文件下載學(xué)習(xí)示例,需要的朋友可以參考下2014-04-04
SpringCloud Config分布式配置中心使用教程介紹
springcloud config是一個解決分布式系統(tǒng)的配置管理方案。它包含了 client和server兩個部分,server端提供配置文件的存儲、以接口的形式將配置文件的內(nèi)容提供出去,client端通過接口獲取數(shù)據(jù)、并依據(jù)此數(shù)據(jù)初始化自己的應(yīng)用2022-12-12
Spring5學(xué)習(xí)之基礎(chǔ)知識總結(jié)
這篇文章主要介紹了Spring5學(xué)習(xí)之基礎(chǔ)知識總結(jié),文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-05-05
SpringBoot自定義線程池,執(zhí)行定時任務(wù)方式
這篇文章主要介紹了SpringBoot自定義線程池,執(zhí)行定時任務(wù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04
Spring?Boot整合Kafka+SSE實現(xiàn)實時數(shù)據(jù)展示
本文主要介紹了Spring?Boot整合Kafka+SSE實現(xiàn)實時數(shù)據(jù)展示2024-06-06

