簡單工廠VS工廠方法

簡單工廠

  1.自定義多個算法

  2.算法的實現在工廠類中實現,工廠類中包含一些算法邏輯,根據客戶端選擇條件動態管理相關類

  3.客戶端不需要指明調用的算法類

  4.對新的產品or算法可擴展,但同時需要修改工廠實現類,實現對修改開發,

工廠方法模式

  1.對具體產品有自己的產品工廠

  2.對實現哪個產品的判斷移動到客戶端來判斷,需要由客戶端選擇實現的工廠,生成產品

  3.如果同時需要增加一個產品,需要同時增加產品類和產品工程類,修改的只是客戶端

 

 

 abstract class  Product
	  {
		  public  abstract void CreateProduct();
		 
	  }
         //product a
	  class Product_A extends Product
	  {
		   public  void CreateProduct()
		  {
			   System.out.println("Create Product_A");
		  }
	  }
          // product b
	    class Product_B extends Product
	  {
		   public  void CreateProduct()
		  {
			   System.out.println("Create Product_B");
		  }
	  }

	  // Factory

	  class Product_Factory
	  {
		  public  Product CreateProduct(int ind)
		  {
			  Product pro = null;

			  if(ind == 1)
                  pro = new Product_A();

			  if(ind == 2)
                  pro = new Product_B();

			  return pro;

		  }
	  }
      

	  // 工廠
	 interface  CreateFactory
	 {
		 public  Product CreateProductFactory();
	 }



	 class Factory_A implements CreateFactory
	 {
		  public  Product CreateProductFactory()
		 {
			  return new Product_A();
		 }
	 }

	  class Factory_B implements CreateFactory
	 {
		  public  Product CreateProductFactory()
		 {
			  return new Product_B();
		 }
	 }

	 class Product_Factory_Test
	 {		
		 public void Product_Factory_Client()
		 {
			 // simple factory
			  Product_Factory fac = new Product_Factory();
			  fac.CreateProduct(1).CreateProduct();
			   fac.CreateProduct(2).CreateProduct();
              

			  // factory method
			   CreateFactory Cfa = new Factory_A();
			   CreateFactory Cfb = new Factory_B();
               Cfa.CreateProductFactory().CreateProduct();
			   Cfb.CreateProductFactory().CreateProduct();

		}

 

發佈了51 篇原創文章 · 獲贊 0 · 訪問量 1377
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章