動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)大賽成都網(wǎng)站建設(shè)方案推廣
設(shè)計(jì)模式-簡(jiǎn)單工廠
簡(jiǎn)單工廠模式是一個(gè)集中管理對(duì)象創(chuàng)建,并根據(jù)條件生成所需類(lèi)型對(duì)象的設(shè)計(jì)模式,有助于提高代碼的復(fù)用性和維護(hù)性,但可能會(huì)導(dǎo)致工廠類(lèi)過(guò)于復(fù)雜且違反開(kāi)閉原則。
抽象提取理論:
- 封裝對(duì)象創(chuàng)建過(guò)程
- 解耦客戶端與產(chǎn)品類(lèi)
- 控制程序擴(kuò)展性
代碼需求:需要實(shí)現(xiàn)一個(gè)計(jì)算器功能,輸入運(yùn)算符號(hào)和兩個(gè)數(shù)字進(jìn)行計(jì)算。你應(yīng)該如何實(shí)現(xiàn)呢?
簡(jiǎn)單工廠實(shí)現(xiàn)
代碼結(jié)構(gòu)圖
- 基類(lèi):運(yùn)算類(lèi)
- 實(shí)現(xiàn)類(lèi):加法類(lèi),乘法類(lèi),減法類(lèi),除法類(lèi)
- 工廠類(lèi):簡(jiǎn)單工廠類(lèi)
基于代碼結(jié)構(gòu)圖實(shí)現(xiàn)代碼,以下代碼只創(chuàng)建兩個(gè)實(shí)現(xiàn)類(lèi)。
基類(lèi):
/*** 運(yùn)算類(lèi)-基類(lèi)*/
public abstract class Operation {/*** 計(jì)算方法*/abstract double getResult(double num1,double num2);
}
實(shí)現(xiàn)類(lèi)-加法:
public class Addition extends Operation{@Overridedouble getResult(double num1, double num2) {return num1 + num2;}
}
實(shí)現(xiàn)類(lèi)-減法:
public class Subtraction extends Operation{@Overridedouble getResult(double num1, double num2) {return num1 - num2;}
}
工廠類(lèi):
public class Factory {public Operation createOperate(String str){switch (str){case "+":return new Addition();case "-":return new Subtraction();default:return null;}}
}
客戶類(lèi):
public class FactoryDemo {public static void main(String[] args) {// 創(chuàng)建工廠Factory factory = new Factory();Operation operate = factory.createOperate("+");System.out.println("加法計(jì)算結(jié)果:" + operate.getResult(10, 10));Operation operate2 = factory.createOperate("-");System.out.println("減法計(jì)算結(jié)果:" + operate2.getResult(10, 10));}
}