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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

《研磨设计模式》chap6 工厂模式factory(1)模式简介

發布時間:2025/3/21 asp.net 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《研磨设计模式》chap6 工厂模式factory(1)模式简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

場景:導出多種數據格式的文件,有txt的,有數據庫的。

1. 簡單工廠的實現方式

public interface ExportFileApi {//導出內容成為文件 public boolean export(String data); }//導出成文本文件格式的對象 public class ExportTxtFile implements ExportFileApi{public boolean export(String data) {//簡單示意一下,這里需要操作文件System.out.println("導出數據"+data+"到文本文件");return true;} }//導出成數據庫備份文件形式的對象 public class ExportDB implements ExportFileApi{public boolean export(String data) {//簡單示意一下,這里需要操作數據庫和文件System.out.println("導出數據"+data+"到數據庫備份文件");return true;} }//導出數據庫格式的對象 public class ExportOperate {//導出文件 public boolean export(int type,String data){ExportFileApi api = null;//根據類型來選擇究竟要創建哪一種導出文件對象if(type == 1){api = new ExportTxtFile();}else if(type == 2){api = new ExportDB();}return api.export(data);} }public static void main(String[] args) {ExportOperate operate = new ExportOperate();operate.export(2, "測試數據");}

2.工廠模式說明

父類在不知道具體實現的情況下, 完成自身的功能調用; 而具體的實現延遲到子類來實現(就是返回子類對象,再調用子類對象的方法)

//創建器,聲明工廠方法 public abstract class Creator {// 創建Product的工廠方法 protected abstract Product factoryMethod();//示意方法,實現某些功能的方法 public void someOperation() {//通常在這些方法實現中,需要調用工廠方法來獲取Product對象Product product = factoryMethod();} }//具體的創建器實現對象 public class ConcreteCreator extends Creator {public Product factoryMethod() {//重定義工廠方法,返回一個具體的Product對象return new ConcreteProduct();} }//工廠方法所創建的對象的接口 public interface Product {//可以定義Product的方法 }//具體的Product對象 public class ConcreteProduct implements Product {//實現Product要求的方法 }

eg.

public interface Product1{ }public interface Product2{ }public interface Product {public void setProduct1(Product1 p1);public void setProduct2(Product2 p2); }public class ConcreteProduct implements Product{ public void setProduct1(Product1 p1) {// TODO Auto-generated method stub }public void setProduct2(Product2 p2) {// TODO Auto-generated method stub } }public abstract class Creator {//工廠方法,一般不對外,創建一個部件對象 protected abstract Product1 factoryMethod1();//工廠方法,一般不對外,創建一個部件對象 protected abstract Product2 factoryMethod2();//創建客戶端需要的對象,客戶端主要使用產品對象來完成所需要的功能 public Product createProduct(){//在這里使用工廠方法,得到客戶端所需對象的部件對象Product1 p1 = factoryMethod1();Product2 p2 = factoryMethod2();//工廠方法創建的對象是創建客戶端對象所需要的Product p = new ConcreteProduct();p.setProduct1(p1);p.setProduct2(p2);return p;} }

總結

以上是生活随笔為你收集整理的《研磨设计模式》chap6 工厂模式factory(1)模式简介的全部內容,希望文章能夠幫你解決所遇到的問題。

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