《研磨设计模式》chap6 工厂模式factory(1)模式简介
生活随笔
收集整理的這篇文章主要介紹了
《研磨设计模式》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.工廠模式說明
父類在不知道具體實現的情況下, 完成自身的功能調用; 而具體的實現延遲到子類來實現(就是返回子類對象,再調用子類對象的方法)
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)模式简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《研磨设计模式》chap25 访问者模式
- 下一篇: 《研磨设计模式》chap6 工厂模式fa