工厂模式之静态工厂模式和工厂方法模式
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                工厂模式之静态工厂模式和工厂方法模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                1.簡介
工廠模式作用:實現了創建者和調用者的分離
 詳細分類:
靜態工廠模式:用來生產同一等級結構中的任意產品(對于增加新的產品,需要覆蓋已有的代碼),又叫簡單工廠模式
工廠方法模式:用來生產統一等級結構中的固定產品(支持增加的任意產品)
抽象工廠模式:圍繞一個禪機共產創建其他工廠,該超級工廠又稱為其他工廠的工廠(工廠的工廠)。
核心本質:
 實例化對象不使用new,用工廠方法代替。
 將選擇實現類,創建對象統一管理和控制,從而將調用者跟我們的實現類解耦。
 應用場景:
 JDK中Calendar的getInstance方法
 JDBC中的Connection對象的獲取
 Spring中IOC容器創建管理bean對象
 反射中Class對象的newInstance方法
2.靜態工廠模式
/*** 靜態工廠模式(簡單工廠模式)* 大多數情況下都使用這種模式* 缺點:不滿足開閉原則,每次增加一種類型,都需要在這里修改代碼* 但是開閉原則需要付出比較大的代價*/ public class CarFactory {//方法一public static Car getCar(String car){if(car.equals("小黃單車")){return new XiaoHuang();}else if (car.equals("小紅單車")){return new XiaoHong();}else if (car.equals("小藍單車")){return new XiaoLan();}else{return null;}}//方法二(將每一種車都自己創建一個方法)public static Car getXiaoHong(){return new XiaoHong();}public static Car getXiaoLan(){return new XiaoLan();}public static Car getXiaoHuang(){return new XiaoHuang();} }//顧客 public class Consumer {public static void main(String[] args) {/*傳統方法XiaoHong xh = new XiaoHong();xh.car();XiaoHuang xiaoHuang = new XiaoHuang();xiaoHuang.car();*//* 方法一Car c1 = CarFactory.getCar("小藍單車");Car c2 = CarFactory.getCar("小紅單車");*///方法二:Car c1 = CarFactory.getXiaoHong();Car c2 = CarFactory.getXiaoLan();c1.car();c2.car();} } //car接口 public interface Car {void car(); } //每一種車型 public class XiaoLan implements Car {@Overridepublic void car() {System.out.println("小藍單車");} }3.工廠方法模式
/*** 工廠方法模式:需要哪個車就去哪個車的工廠去取* 優點:不修改已有代碼的前提下,通過增加新的工廠類實現擴展* 缺點:類太多,比起簡單工廠模式來說,雖然實現了開閉原則,但是很麻煩。*/ //工廠接口 public interface CarFactory{Car getCar(); } //每個車的工廠-小藍車廠 public XiaoLanFactory implements CarFactory{@Overridepublic Car getCar() {return new XiaoLan();} } //每個車的工廠-小紅車廠 public class HongFactory implements CarFactory {@Overridepublic Car getCar() {return new XiaoHong();} } //車接口 public interface Car {void car(); } //車產品-小藍車 public class XiaoLan implements Car {@Overridepublic void car() {System.out.println("小藍單車");} } //車產品-小紅車 public class XiaoHong implements Car {@Override public void car() {System.out.println("小紅單車");} } //顧客 public class Consumer {public static void main(String[] args) {//需要什么車,就去哪個車的工廠Car c1 = new LanFactory().getCar();Car c2 = new HongFactory().getCar();c1.car();c2.car();} }4.小結:
通過以下方面對比:
 結構復雜度:選 靜態工廠模式
 代碼復雜度:選 靜態工廠模式
 編程復雜度:選 靜態工廠模式
 管理上的復雜度:選 靜態工廠模式
根據設計原則:選 工廠方法模式
 根據實際業務:選 靜態工廠模式
綜上:
 靜態工廠模式:雖然某種程度上不符合設計原則,但實際使用最多。
 工廠方法模式:不修改已有類的前提下,通過增加新的工廠類實現擴展。
( 簡單提一下抽象工廠模式。)
 抽象工廠模式:不可以增加產品,可以增加產品族。
總結
以上是生活随笔為你收集整理的工厂模式之静态工厂模式和工厂方法模式的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 不明白这些道理
- 下一篇: Linux零基础作业,Linux作业1-
