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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

【设计模式】——工厂方法FactoryMethod

發布時間:2025/3/14 asp.net 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【设计模式】——工厂方法FactoryMethod 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  前言:【模式總覽】——————————by xingoo

  模式意圖

  工廠方法在MVC中應用的很廣泛。

  工廠方法意在分離產品與創建的兩個層次,使用戶在一個工廠池中可以選擇自己想要使用的產品,而忽略其創建過程。

  簡單來說,就像一個大型的工廠,對于消費者來說,只需要知道都有什么工廠的產品生產出來,而不需要關心工廠是如何生產產品的。對于工廠來說,必須知道所有的產品的制造方法。

  模式結構

  Creator 創建工廠的接口

  ConcreteCreator 具體的產品創建者

  Product 產品的接口

  ConcreteProduct 具體的產品

  適合場景

  1 當一個類不知道它所必須創建的對象的類的時候。

  2 當一個類希望由他的子類來制定它所創建的對象的時候

  3 當類創建對象的職責委托給多個幫助子類中的某一個,并且希望進行一些信息的局部初始化的時候。

  代碼結構

  工廠方法需要一個工廠接口,提供了基本的類模式,和一個產品接口,提供基本的方法。

1 interface Creator{ 2 public Product factory(); 3 } 4 interface Product{ 5 public void Say(); 6 }

  接下來就是具體的工廠方法,可以創建不同的產品。

1 class ConcreteCreator1 implements Creator{ 2 public Product factory() { 3 return new ConcreteProduct1(); 4 } 5 } 6 class ConcreteCreator2 implements Creator{ 7 public Product factory() { 8 return new ConcreteProduct2(); 9 } 10 }

  其次需要不同的產品。

1 class ConcreteProduct1 implements Product{ 2 public void Say() { 3 System.out.println("ConcreteProduct1"); 4 } 5 } 6 class ConcreteProduct2 implements Product{ 7 public void Say() { 8 System.out.println("ConcreteProduct2"); 9 } 10 }

  使用方法,大致如下

1 public class test { 2 public static Creator creator1,creator2; 3 public static Product product1,product2; 4 public static void main(String[] args){ 5 creator1 = new ConcreteCreator1(); 6 creator2 = new ConcreteCreator2(); 7 8 product1 = creator1.factory(); 9 product2 = creator2.factory(); 10 11 product1.Say(); 12 product2.Say(); 13 } 14 }

  生活中的設計模式

  

  目前的生活,是一種快餐的生活。有時候不想做飯,去飯店也等不及,肯德基、麥當勞、德克士就成為了一種很方便的方式。

  我們去肯德基,通常會吃點漢堡,點點可樂,不需要知道這些東西是怎么做出來的,直接點,拿到吃,簡單方便,這就是生活中的快餐工廠。

  通過一個MakeChoice方法,可以統一的進行選擇。

interface KFC {public Client working(); }interface Client {public void eating(); }class Bread_Menu implements KFC {public Client working() {return new Client_Bread();} }class Cola_Menu implements KFC {public Client working() {return new Client_Cola();} }class Client_Bread implements Client {public void eating() {System.out.println("顧客 吃面包");} }class Client_Cola implements Client {public void eating() {System.out.println("顧客 喝可樂");} }public class FactoryMethodTest {public static KFC waiter;public static Client client1,client2;public static KFC MakeChoice(KFC maker){if(maker instanceof Bread_Menu){return new Bread_Menu(); }else{return new Cola_Menu();}}public static void main(String[] args){System.out.println("-------------想吃面包-----------------");waiter = MakeChoice(new Bread_Menu());client1= waiter.working();client1.eating();System.out.println("-------------想喝可樂-----------------");waiter = MakeChoice(new Cola_Menu());client2 = waiter.working();client2.eating();} }

  執行如下

-------------想吃面包----------------- 顧客 吃面包 -------------想喝可樂----------------- 顧客 喝可樂

?

轉載于:https://www.cnblogs.com/xing901022/p/4044211.html

總結

以上是生活随笔為你收集整理的【设计模式】——工厂方法FactoryMethod的全部內容,希望文章能夠幫你解決所遇到的問題。

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