999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

利用案例教學法由淺入深地講解抽象工廠模式

2010-04-09 06:08:12
科學之友 2010年11期
關鍵詞:案例數(shù)據(jù)庫產(chǎn)品

徐 宏

(太原城市職業(yè)技術(shù)學院,山西 太原 030027)

利用案例教學法由淺入深地講解抽象工廠模式

徐 宏

(太原城市職業(yè)技術(shù)學院,山西 太原 030027)

文章主要闡述了抽象工廠模式,通過利用案例教學法進行講解,讓學員徹底理解并會使用抽象工廠設計模式。

抽象工廠模式;案例教學法;講解

1 抽象工廠模式

抽象工廠模式是所有形態(tài)的工廠模式中最為抽象和最具一般性的一種形態(tài)。抽象工廠模式是指當有多個抽象角色時,使用的一種工廠模式。抽象工廠模式可以向客戶端提供一個接口,使客戶端在不必指定產(chǎn)品的具體的情況下,創(chuàng)建多個產(chǎn)品族中的產(chǎn)品對象。根據(jù)LSP原則,任何接受父類型的地方,都應當能夠接受子類型。因此,實際上系統(tǒng)所需要的,僅僅是類型與這些抽象產(chǎn)品角色相同的一些實例,而不是這些抽象產(chǎn)品的實例。換言之,也就是這些抽象產(chǎn)品的具體子類的實例。工廠類負責創(chuàng)建抽象產(chǎn)品的具體子類的實例。

2 案例教學法

學生在利用該設計模式開發(fā)項目的時候,往往只是機械地照搬教師的源代碼,并沒有真正理解抽象工廠的含義。那么如何講解好這個知識點呢?在實際的授課過程中,筆者總結(jié)了講解這個難點的方法和技巧,總結(jié)出來與大家共享。

這里,筆者采用了案例教學法,層層深入,大約需要3個階段把這個難點講解完成。具體的思路是:首先,讓學員明白引入接口的原因;其次,講解使用簡單工廠的便利;最后,講解使用抽象工廠是錦上添花。

文章所使用的案例是一個用VS2008開發(fā)的用戶登錄程序。

第一階段:講解接口的引入,為什么要使用接口呢?這里需要跟學生說明,目前的軟件產(chǎn)品大部分都會和數(shù)據(jù)庫進行交互,但每個公司或企業(yè)不可能使用同樣的數(shù)據(jù)庫。例如,一個工資管理系統(tǒng),大公司可能使用SQLServer,而小公司可能使用Access就夠用了,那么如何讓一套程序既可使用SQLServer,又可使用Access作為數(shù)據(jù)庫呢?答案是我們在數(shù)據(jù)訪問層使用統(tǒng)一的接口,讓訪問SQLServer和Access的類都實現(xiàn)這個接口,然后通過接口調(diào)用具體的實現(xiàn)。

具體的演示方法是在用戶登錄系統(tǒng)的基礎上點擊DAL層的類,右鍵選擇重構(gòu),選擇提取接口,這樣一個接口就出現(xiàn)了,見圖1。

這里為了更加的規(guī)范,新建一個接口層的類庫IDAL,將這個接口移到這個類庫IDAL中,見圖2。

接口建立以后,為了可以使用Access庫,添加新的數(shù)據(jù)層AccessDAL,再添加一個AccessUserDAL類并實現(xiàn)剛才創(chuàng)建的接口。最后修改BLL層的調(diào)用方式為接口調(diào)用,用接口隱示的聲明,用類顯示的實現(xiàn)調(diào)用,對于訪問SQLServer數(shù)據(jù)庫具體的代碼是:

圖2 ISqlUserDAL dal=new Demo.DAL.SqlUserDAL();

如果需要訪問Access庫,稍加改動就變成訪問Access庫,具體代碼是:

ISqlUserDAL dal=new Demo.AccessDAL.AccessUserDAL();

第二階段:首先給學生提出問題:接口就可以實現(xiàn)訪問不同的數(shù)據(jù)庫我們?yōu)槭裁床捎霉S模式呢?原因有兩個:第一是客戶提出新需求,自己不改變源碼就更換為其他數(shù)據(jù)庫;第二是從開發(fā)公司考慮,為了適應不同的數(shù)據(jù)庫,每次需要修改BLL層源代碼,再編譯程序,發(fā)布程序比較麻煩。那么具體實現(xiàn)步驟是創(chuàng)建新的工廠項目類,添加類SFactory,然后在類中實現(xiàn)返回實現(xiàn)產(chǎn)品接口的方法,具體代碼如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace Demo.SFactory

{

public class Factory

{

static string strDBType=

System.Configuration.ConfigurationManager.AppSettings["DBType"].ToString();

public static Demo.DAL.IUserDALCreatUserInfo()

{switch(strDBType)

{ case"sqlServer":

return new Demo.DAL.UserDAL();

break;

case "Access":

return new Demo.AccessDAL.UserAccessDAL();

break;

default:

return null;

}

}

}

}

通過Web.Config讀取配置數(shù)據(jù),針對不同數(shù)據(jù)庫,返回不同實現(xiàn)接口的對象,最后修改BLL層的調(diào)用方式為簡單工廠調(diào)用,用接口隱示聲明,但是實現(xiàn)通過工廠創(chuàng)建,代碼如下:

privatestatic IUserInfodb=SFactory.CreateDalUserInfoInstance();

配置文件App.Config代碼如下:

="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:Three-FrameDemoUIDemoUIinDebugAccessDb.mdb"/>

這樣我們就可以通過修改配置文件實現(xiàn)不同數(shù)據(jù)庫的訪問,實現(xiàn)了簡單工廠的設計模式。

第三階段:講解抽象工廠的實現(xiàn),有了簡單工廠,為什么還要使用抽象工廠呢,原因是一個大的軟件項目中包括很多的模塊,不同的模塊就要創(chuàng)建不同的接口,那么如何返回很多實現(xiàn)接口的對象呢,在簡單工廠模式中只能編寫多塊相似的代碼,通過判斷數(shù)據(jù)庫的類型返回具體的對象,這樣就造成大量的代碼冗余。這里采用優(yōu)化的方法,即抽象公共的部分,通過抽象類調(diào)用具體的實現(xiàn)類,可以產(chǎn)生一批有關聯(lián)的產(chǎn)品,例如通過配置文件讀取是Access數(shù)據(jù)庫類型,那么得到是Access的工廠,工廠里的產(chǎn)品都是通過訪問Access數(shù)據(jù)庫數(shù)據(jù)產(chǎn)生的產(chǎn)品。可以說對于簡單工廠模式一次只能創(chuàng)建一個對象,而對于抽象工廠模式實現(xiàn)一次創(chuàng)建一系列相互依賴對象的需求。

具體的演示實現(xiàn)步驟是首先通過修改前面的編寫的簡單工廠SFactory類為抽象工廠類,添加相應的抽象方法,通過讀取對應的配置文件,返回實現(xiàn)抽象類的工廠;然后創(chuàng)建一個具體工廠類SQLFactory繼承這個抽象工廠類,重寫抽象方法,只返回具體SQLServer庫的實現(xiàn);最后創(chuàng)建新的Access具體工廠類,添加類AccessFactory,讓它也繼承抽象工廠類,重寫抽象方法。另外,不要忘記修改BLL層的調(diào)用方式為抽象工廠調(diào)用,具體的代碼是先得到一個工廠,然后再得到相應產(chǎn)品。具體的代碼是:

private static AbsDALFactory factory=AbsDALFactory.Choose-Factory();

private static IUserInfo db=factory.CreateDalUserInfoInstance();

這樣我們就將數(shù)據(jù)訪問層的內(nèi)容進行了細化,首先引入接口,再使用簡單工廠,然后引入抽象工廠模式,通過演示讓學員明白為什么要使用簡單工廠和抽象工廠以及如何使用它。具體思路見圖3。

圖3 使用簡單工廠和抽象工廠的具體思路

這里演示完成后,如果學生還無法透徹地理解抽象工廠模式,下面共享一個生活案例給大家,通過案例剖析抽象工廠的實現(xiàn)方式:

圖4 抽象工廠

客戶是什么?這里我們說的客戶是指調(diào)用者,具體而言如網(wǎng)站的美工設計人員。那么地圖是什么呢?指配置文件,快餐點比喻我們的抽象工廠,漢堡和雞腿比喻抽象產(chǎn)品,客戶即調(diào)用者只知道這些,具體的哪個快餐店,如何制作什么漢堡,客戶并不關心,只要能到最方便的快餐店吃到漢堡,填飽肚子即可。具體的工廠是肯德基和麥當勞,具體產(chǎn)品是KFC的漢堡、KFC雞腿,他們這一組是相關的,另外一組是McDonald漢堡、McDonald雞腿,他們兩個是相關的,是可以左手拿著McDonald漢堡,右手拿著Mc-Donald雞腿狼吞虎咽的;我們把相關的產(chǎn)品,稱為一系列的產(chǎn)品,你還想吃薯條,稍微擴展一下,加一個薯條的產(chǎn)品,包括抽象薯條和具體的薯條。如下圖所示:藍色框圖中的肯德基的漢堡、雞腿和薯條是相關的,一系列的,由此可以看出抽象工廠設計模式給客戶提供的不再是單一的產(chǎn)品,而是提供一批系列的產(chǎn)品。

圖5 抽象工廠二

3 總結(jié)

通過層層深入的代碼演示,再結(jié)合生活案例來理解抽象工廠,希望大家能夠掌握簡單三層到抽象工廠的講解技巧,在實際的授課中深入淺出、步步為營熟練地進行代碼演示,讓學員徹底理解并會使用抽象工廠設計模式。

Explains the Abstract Factory Pattern from the Shallow to the Deep Using the Case Teaching Method

Xu Hong

The article mainly elaborated the abstract factory pattern,through carries on the explanation using the case teaching method,will let the student understand and use the abstract plant design pattern thoroughly.

abstract factory pattern;case teaching method;explanation

G712

A

1000-8136(2010)32-0107-03

猜你喜歡
案例數(shù)據(jù)庫產(chǎn)品
案例4 奔跑吧,少年!
少先隊活動(2021年2期)2021-03-29 05:40:48
隨機變量分布及統(tǒng)計案例拔高卷
發(fā)生在你我身邊的那些治超案例
中國公路(2017年7期)2017-07-24 13:56:38
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
數(shù)據(jù)庫
財經(jīng)(2016年6期)2016-02-24 07:41:51
一個模擬案例引發(fā)的多重思考
2015產(chǎn)品LOOKBOOK直擊
Coco薇(2015年1期)2015-08-13 02:23:50
新產(chǎn)品
玩具(2009年10期)2009-11-04 02:33:14
主站蜘蛛池模板: 亚洲最大情网站在线观看| 国产高清无码第一十页在线观看| 欧美日韩激情在线| 欧美一级在线| 精品午夜国产福利观看| 日韩福利在线视频| 久久天天躁狠狠躁夜夜2020一| 亚洲开心婷婷中文字幕| 成人亚洲天堂| 国产超碰一区二区三区| 人妖无码第一页| 久久无码av三级| 国产天天色| 老司机午夜精品网站在线观看 | 亚洲成人在线免费| 国产h视频在线观看视频| 久操中文在线| 欧美日韩成人| 免费不卡视频| 亚洲国产精品一区二区第一页免| 毛片免费试看| 久久香蕉国产线看观看亚洲片| 国产靠逼视频| 国产日韩欧美精品区性色| 制服丝袜国产精品| 久久夜色撩人精品国产| 久青草免费在线视频| 亚洲最猛黑人xxxx黑人猛交| 久久亚洲中文字幕精品一区| 国产91无码福利在线| 97视频免费在线观看| 国产午夜无码专区喷水| 毛片一级在线| 狠狠色婷婷丁香综合久久韩国| 热久久这里是精品6免费观看| 国产精品手机在线观看你懂的| 日本午夜三级| 欧美日韩国产高清一区二区三区| 亚洲免费黄色网| 青青草原偷拍视频| 国产精品99一区不卡| 亚洲AⅤ综合在线欧美一区 | 亚洲日韩精品无码专区| 国产污视频在线观看| 免费a级毛片18以上观看精品| 一本视频精品中文字幕| 日韩欧美国产中文| AV色爱天堂网| 亚洲成A人V欧美综合| 国产黄在线免费观看| 国产乱子伦精品视频| 国产亚洲精品va在线| 欧美激情福利| AV熟女乱| 日韩精品久久无码中文字幕色欲| 高清色本在线www| 四虎永久免费地址| 青青青国产视频手机| 国产精品网曝门免费视频| 在线永久免费观看的毛片| 国产精品一区二区不卡的视频| 一级一毛片a级毛片| 无码精品国产dvd在线观看9久| 欧美 亚洲 日韩 国产| 国产资源站| 欧美日韩精品一区二区视频| 99这里精品| 一本大道无码日韩精品影视| 另类专区亚洲| 伊人久久婷婷五月综合97色| 99re66精品视频在线观看| 久久9966精品国产免费| 99视频在线观看免费| 国产欧美视频综合二区| 中文国产成人久久精品小说| 日韩美女福利视频| 亚洲欧洲自拍拍偷午夜色无码| 国产精品免费露脸视频| 在线中文字幕日韩| 无码中字出轨中文人妻中文中| 国产成人福利在线视老湿机| 亚洲成人在线网|