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都符合这种规范,接口的使用符合开闭原则,尽量减少了代码与环境的直接接触而换为接口,想要实现什么结果,只需要在主程序和子类中进行扩充就可以了。

 

相关文章
|
7月前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPISDK设置软件触发模式(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPISDK设置软件触发模式(C#)
80 1
|
2月前
|
设计模式 程序员 C#
C# 使用 WinForm MDI 模式管理多个子窗体程序的详细步骤
WinForm MDI 模式就像是有超能力一般,让多个子窗体井然有序地排列在一个主窗体之下,既美观又实用。不过,也要小心管理好子窗体们的生命周期哦,否则一不小心就会出现一些意想不到的小bug
189 0
|
3月前
|
设计模式 开发框架 前端开发
MVC 模式在 C# 中的应用
MVC(Model-View-Controller)模式是广泛应用于Web应用程序开发的设计模式,将应用分为模型(存储数据及逻辑)、视图(展示数据给用户)和控制器(处理用户输入并控制模型与视图交互)三部分,有助于管理复杂应用并提高代码可读性和维护性。在C#中,ASP.NET MVC框架常用于构建基于MVC模式的Web应用,通过定义模型、控制器和视图,实现结构清晰且易维护的应用程序。
61 2
|
3月前
|
存储 C#
C# 一分钟浅谈:继承与多态性的实践
【9月更文挑战第2天】本文从基础入手,详细介绍了面向对象编程中继承与多态性的核心概念。通过 `Animal`、`Dog` 和 `Cat` 类的示例代码,展示了如何利用继承重用代码及多态性实现不同对象对同一方法的多样化响应,帮助读者更好地理解和应用这两个重要概念,提升面向对象编程能力。
45 3
|
4月前
|
前端开发 开发者 C#
深度解析 Uno Platform 中的 MVVM 模式:从理论到实践的全方位指南,助你轻松掌握通过 C# 与 XAML 构建高效可维护的跨平台应用秘籍
【8月更文挑战第31天】本文详细介绍如何在优秀的跨平台 UI 框架 Uno Platform 中实施 MVVM(Model-View-ViewModel)模式,通过一个简单的待办事项列表应用演示其实现过程。MVVM 模式有助于分离视图层与业务逻辑层,提升代码组织性、易测性和可维护性。Uno Platform 的数据绑定机制使视图与模型间的同步变得高效简便。文章通过构造 `TodoListViewModel` 类及其相关视图,展示了如何解耦视图与模型,实现动态数据绑定及命令处理,从而提高代码质量和开发效率。通过这一模式,开发者能更轻松地构建复杂的跨平台应用。
60 0
|
4月前
|
C#
WPF/C#:程序关闭的三种模式
WPF/C#:程序关闭的三种模式
96 0
|
4月前
|
设计模式 前端开发 C#
WPF/C#:理解与实现WPF中的MVVM模式
WPF/C#:理解与实现WPF中的MVVM模式
266 0
|
6月前
|
C#
WPF/C#:程序关闭的三种模式
WPF/C#:程序关闭的三种模式
90 3
|
7月前
|
C#
C# 继承、多态性、抽象和接口详解:从入门到精通
在 C# 中,可以将字段和方法从一个类继承到另一个类。我们将“继承概念”分为两类: 派生类(子类) - 从另一个类继承的类 基类(父类) - 被继承的类 要从一个类继承,使用 : 符号。 在以下示例中,Car 类(子类)继承了 Vehicle 类(父类)的字段和方法:
119 2
|
7月前
|
开发框架 .NET C#
C# 10.0中的扩展属性与模式匹配:深入解析
【1月更文挑战第20天】C# 10.0引入了众多新特性,其中扩展属性与模式匹配的结合为开发者提供了更强大、更灵活的类型检查和代码分支能力。通过这一特性,开发者可以在不修改原始类的情况下,为其添加新的行为,并在模式匹配中利用这些扩展属性进行更精细的控制。本文将详细探讨C# 10.0中扩展属性与模式匹配的工作原理、使用场景以及最佳实践,帮助读者更好地理解和应用这一新功能。