程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#之簡單工廠模式與多態性

C#之簡單工廠模式與多態性

編輯: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都符合這種規范,接口的使用符合開閉原則,盡量減少了代碼與環境的直接接觸而換為接口,想要實現什麼結果,只需要在主程序和子類中進行擴充就可以了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved