java設計模式學習之簡單工廠模式
簡單工廠模式
簡單工廠模式是屬于創(chuàng)建型模式,又叫做靜態(tài)工廠方法(Static Factory Method)模式,但不屬于23種GOF設計模式之一。簡單工廠模式是由一個工廠對象決定創(chuàng)建出哪一種產品類的實例。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的一個特殊實現。
利用簡單工廠模式設計一個計算器。
1:創(chuàng)建一個運算的類
package EasyFactoryModel;
abstract class Operation {
public double num1=0;
public double num2=0;
public double getNum1() {
return num1;
}
public void setNum1(double num1) {
this.num1 = num1;
}
public double getNum2() {
return num2;
}
public void setNum2(double num2) {
this.num2 = num2;
}
public abstract double getResult();
}
2:創(chuàng)建一個加法類。
class OpeartionAdd extends Operation {
public double getResult(){
double result=0;
result=num1+num2;
return result;
}
}
3:創(chuàng)建一個減法類。
public class OpeartionSub extends Operation {
public double getResult(){
double result=0;
result=num1-num2;
return result;
}
}
4:創(chuàng)建一個乘法類。
public class OperationMul extends Operation {
public double getResult(){
double result=0;
result=num1*num2;
return result;
}
}
5:創(chuàng)建一個除法類。
public class OperationDiv extends Operation {
public double getResult(){
double result=0;
result=num1/num2;
return result;
}
}
6:基本運算類做完之后,會發(fā)現,需要根據需要的加減乘除來實例化不同的類,此事,就需要 工廠類。
public class OperationFactory {
public static Operation creatOpera(String operation){
Operation oper=null;
switch(operation){
case "+":oper=new OpeartionAdd();break;
case "-":oper=new OpeartionSub();break;
case "*":oper=new OperationMul();break;
case "/":oper=new OperationDiv();break;
}
return oper;
}
}
工廠類根據不同的操作來創(chuàng)建不同的對象,這里是多態(tài)的使用。
7:測試類
public class Calculator {
public static void main(String[] args) {
Operation oper;
String operation="+";
oper=OperationFactory.creatOpera(operation);
oper.num1=1;
oper.num2=2;
double result=0;
result=oper.getResult();
System.out.println("result="+result);
}
}
8:控制臺輸出:
result=3.0
優(yōu)點:簡單工廠類是整個模式的關鍵,其中包含了必要的邏輯判斷,根據外部信息,決定究竟應該創(chuàng)建哪個具體類對象,
通過實現簡單工廠模式,用戶無需了解對象是如何創(chuàng)建的,只要傳入必要的信息即可。
缺點:工廠類集中了所有實例的創(chuàng)建邏輯,違背了高內聚分配原則。
隨著系統(tǒng)中具體產品類不斷增多,勢必要不斷修改工廠類,不易維護和擴展。同時也違背了開放封閉原則。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Java中的CyclicBarrier循環(huán)柵欄深入解析
這篇文章主要介紹了Java中的CyclicBarrier循環(huán)柵欄深入解析,CycleBarrier 它就相當于是一個柵欄,所有線程在到達柵欄后都需要等待其他線程,等所有線程都到達后,再一起通過,需要的朋友可以參考下2023-12-12
Springboot結合Mybatis-Plus實現業(yè)務撤銷回滾功能
本文介紹了如何在Springboot結合Mybatis-Plus實現業(yè)務撤銷回滾功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-12-12
Springboot使用@RefreshScope注解實現配置文件的動態(tài)加載
本文主要介紹了Springboot使用@RefreshScope注解實現配置文件的動態(tài)加載,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09
IDEA遠程連接HBase及其Java API實戰(zhàn)詳解
這篇文章主要介紹了IDEA遠程連接HBase及其Java API實戰(zhàn)詳解,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04
詳解PipedInputStream和PipedOutputStream_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了管道PipedInputStream和PipedOutputStream,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05

