日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

教你如何一篇博客读懂设计模式之—--工厂模式

發布時間:2025/3/12 asp.net 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 教你如何一篇博客读懂设计模式之—--工厂模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一篇博客讀懂設計模式之—工廠模式

工廠模式在我們日常開發的時候經常用到,相信大家都有了一定的了解,工廠模式是一種創建對象的設計模式,它提供一種創建對象的最佳方式。

主要過程是: 定義一個創建對象的接口,讓其子類自己決定實例化哪一個工廠類,工廠模式使其創建過程延遲到子類進行。

工廠模式主要有常見的三種類型:簡單工廠模式,工廠方法模式,抽象工廠模式。下面我們分別用代碼來介紹一下這三種模式的演化過程:

簡單工廠模式

  • 添加一個接口
  • public interface Car {String getBrand(); }
  • 添加幾個實現類實現接口
  • public class Bmw implements Car {@Overridepublic String getBrand() {return "BMW";} } public class Benz implements Car {@Overridepublic String getBrand() {return "Benz";} } public class Audi implements Car{@Overridepublic String getBrand() {return "Audi";} }
  • 添加一個方法來選擇創建的對象
  • //todo:1 簡單工廠模式,雖然代碼很簡單,但是一個工廠怎么可能生產這么多不同的產品,不太符合規律,所以有了工廠方法模式 public class SimpleFactory {public Car getCar(String name){if("BMW".equalsIgnoreCase(name)){return new Bmw();}else if("Benz".equalsIgnoreCase(name)){return new Benz();}else if("audi".equalsIgnoreCase(name)){return new Audi();}else{return null;}} }
  • 添加測試類:
  • public class TestSimpleFactory {public static void main(String[] args) {SimpleFactory simpleFactory = new SimpleFactory();Car car = simpleFactory.getCar("");System.out.println(car.getBrand());} }

    工廠方法模式:

  • 添加一個工廠的接口
  • //todo:2 工廠方法模式,通過接口來實現,不過這有個不足,我們消費者得自己知道用哪個工廠來進行生產 public interface Factory {Car getCar(); }
  • 實現接口的工廠類
  • public class AudiFactory implements Factory {@Overridepublic Car getCar() {return new Audi();} } public class BenzFactory implements Factory {@Overridepublic Car getCar() {return new Benz();} } public class BmwFactory implements Factory{@Overridepublic Car getCar() {return new Bmw();} }
  • 測試類:
  • public class TestFuncFactory {//這種模式也有點問題,工廠模式的好處是讓使用者更加方便,但是這種模式還要我們知道是要用哪個工廠來創建,這也太不智能了吧,所以就有了抽象工廠public static void main(String[] args) {System.out.println(new BenzFactory().getCar());System.out.println(new BmwFactory().getCar());System.out.println(new AudiFactory().getCar());} }

    抽象工廠方法: 整合了前面兩種模式

  • 添加一個抽象工廠
  • //todo:3. 抽象工廠方法模式,利用抽象類來實現,綜合了工廠方法和簡單工廠方法兩種模式的優缺點 public abstract class AbstractFactory {abstract Car getCar();public Car getCar(String name){if("BMW".equalsIgnoreCase(name)){return new BmwFactory().getCar();}else if("Benz".equalsIgnoreCase(name)){return new BenzFactory().getCar();}else if("audi".equalsIgnoreCase(name)){return new AudiFactory().getCar();}else{return null;}} }
  • 添加一個默認實現類
  • //因為抽象類不能直接實例化,所以這里添加了一個默認類來實現抽象類的其他方法 public class DefaultFactory extends AbstractFactory {@OverrideCar getCar() {return new BenzFactory().getCar();} }
  • 測試類
  • public class TestAbstrFactory {public static void main(String[] args) {DefaultFactory defaultFactory = new DefaultFactory();System.out.println(defaultFactory.getCar("bmw"));} }

    **

    后期會繼續完善 歡迎留言點贊!!

    **

    總結

    以上是生活随笔為你收集整理的教你如何一篇博客读懂设计模式之—--工厂模式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。