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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

设计模式总结篇系列:工厂方法模式(Factory Method)

發(fā)布時間:2023/11/29 asp.net 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式总结篇系列:工厂方法模式(Factory Method) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

工廠方法模式適合于對實現(xiàn)了同一接口或繼承了同一父類的一些類進行實例的創(chuàng)建。一般是通過定義一個工廠類,并在其方法中實現(xiàn)對具有上述特點的類對象的創(chuàng)建。

根據(jù)具體產(chǎn)生類對象的方法定義形式,又可以將其分為普通工廠方法模式、多個工廠方法模式和靜態(tài)工廠方法模式。

一、普通工廠方法模式:

常見的經(jīng)典寫法如下(以發(fā)送郵件和短信為例):

1.定義郵件類和短信類具有的共同接口:

1 interface Sender{ 2 3 public void sender(); 4 5 }

2.定義郵件類和短信類:

1 class MailSender implements Sender{ 2 3 @Override 4 public void send() { 5 System.out.println("發(fā)送郵件"); 6 } 7 8 } 1 class SmsSender implements Sender{ 2 3 @Override 4 public void send() { 5 System.out.println("發(fā)送短信"); 6 } 7 8 }

3.定義工廠類:

1 class SenderFactory { 2 3 public Sender produce(String type) { 4 if (type.equals("mail")) { 5 return new MailSender(); 6 } else if (type.equals("sms")) { 7 return new SmsSender(); 8 } else { 9 return null; 10 } 11 } 12 13 }

4.測試生成MailSender和SmsSender對象:

1 package com.qqyumidi; 2 3 public class FactoryMethodTest { 4 5 public static void main(String[] args) { 6 SenderFactory factory = new SenderFactory(); 7 Sender mailSender = factory.produce("mail"); 8 Sender smsSender = factory.produce("sms"); 9 } 10 11 }

?

二、多個工廠方法模式:

將普通工廠模式中的工廠類中創(chuàng)建類的方法從依賴于參數(shù)判斷改為直接針對每種對象各自定義一個生產(chǎn)方法。

具體代碼如下:

1 class SenderFactory { 2 3 public Sender produceMail(){ 4 return new MailSender(); 5 } 6 7 public Sender produceSms(){ 8 return new SmsSender(); 9 } 10 11 }

?

三、靜態(tài)工廠方法模式:

靜態(tài)工廠方法模式與前面兩種具體的方法定義不同在于方法被定義成靜態(tài)的,這樣可以不通過創(chuàng)建工廠實例就能直接獲取到目標類的對象。

1 class SenderFactory { 2 3 public static Sender produceMail(){ 4 return new MailSender(); 5 } 6 7 public static Sender produceSms(){ 8 return new SmsSender(); 9 } 10 11 }

?

對于工廠方法模式,推薦使用第三種寫法。

?

---------------------------------------------------------------------------------
筆者水平有限,若有錯漏,歡迎指正,如果轉(zhuǎn)載以及CV操作,請務(wù)必注明出處,謝謝! 分類: 設(shè)計模式
本文轉(zhuǎn)自Windstep博客園博客,原文鏈接:http://www.cnblogs.com/lwbqqyumidi/p/3744842.html,如需轉(zhuǎn)載請自行聯(lián)系原作者

總結(jié)

以上是生活随笔為你收集整理的设计模式总结篇系列:工厂方法模式(Factory Method)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。