C#之簡單工廠模式與多態性
最近看簡單工廠模式,視頻中隻是簡單的講了講,於是自己又上網查了一下,有了一個初步的了解,它和多態性有著密切的關係,它是通過建立一個父類,通過派生出不同的子類來產生不同的功能,再根據主程序中所指定的實例化的派生子類來實現的。
工廠,我想大家都知道現實中的工廠是幹什麼的,就生產產品的,至於規格,他們不知道,於是需要一個抽象角色來告訴他生產什麼,比如螺母,於是父類產生了,就是螺母,但是規格呢?這時候就需要具體角色來規定規格,也就是由抽象類父類派生出具體的子類來具體分類出不同的規格,下麵用一段簡單的代碼描述一下:
using System;
using System.Text;
class Program
{
static void Main(string [] args)
{
DVD dvd=new DVD() ;
Console.WriteLine(dvd.PlayVideo());
VCD vcd = new VCD();
Console.WriteLine(vcd.PlayVideo());
TEST();
}
//VideoShow工廠
static void TEST()
{//因為VideoShow是VCD和DVD的父類,所以vs能容納下VCD和DVD
VideoShow vs;//vs表示抽象基類
vs = new DVD();
Play(vs);
vs = new VCD();
Play(vs);
}
//運用到了多態,相當於一個接口
static void Play(VideoShow vs)
{
string str = vs.PlayVideo();
Console.WriteLine(str);
}
}
//抽象角色:VideoShow
Public abstract class VideoShow
{
public abstract string PlayVideo();
}
//兩種具體實現
//具體角色: VCD
public class VCD :VideoShow
{
public override string PlayVideo()
{
return "我放的是VCD";
}
}
//具體角色:DVD
public class DVD :VideoShow
{
public override string PlayVideo()
{
return "我放的是DVD";
}
}
下麵是運行結果:
這段代碼就描述了一個簡單工廠模式,從小往大說,首先要生產的是DVD\VCD,這兩種具體產品同屬於抽象類Videoshow,而如果直接把Videoshow帶入主程序的話,想要更改則需要改子類,該主函數,為了靈活和可擴充,於是需要有一個接口,那麼何為接口呢?也就是代碼中的vs,它是一種規範,而VCD、DVD都符合這種規範,接口的使用符合開閉原則,盡量減少了代碼與環境的直接接觸而換為接口,想要實現什麼結果,隻需要在主程序和子類中進行擴充就可以了。
最後更新:2017-04-03 12:54:50
上一篇:
HDU1173 采礦
下一篇:
xmpp即時通訊三
python獲取央視節目信息
prototype開發者手冊
SVN的安裝以及配置,包括myeclipse的SVN插件安裝
《Linux From Scratch》第二部分:準備構建 第五章:構建臨時文件係統- 5.24. Grep-2.21
[Spring]有一個人的類,他有使用武器的方法;有英雄類,繼承人的類;武器有手槍和武士刀。
《Spring 5 官方文檔》16.ORM和數據訪問(二)
阿裏雲高防IP(網絡安全)幸運券領取及使用
潘金蓮改變了曆史嗎 - PostgreSQL輿情事件分析應用
MVC架構探究及其源碼實現(4)-前端控製器
拉黑微信不常聯係人,你失去的可能不止是一座金山!