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

 

时间: 2024-10-29 18:09:33

C#之简单工厂模式与多态性的相关文章

实例讲解PHP设计模式编程中的简单工厂模式_php实例

简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式.简单工厂模式是由一个工厂对象决定创建出那一种产品类的实例. 1.工厂模式的几种形态工厂模式专门负责将大量有共同接口的类实例化.工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类.工厂模式有以下几种形态: (1)简单工厂(Simple Factory)模式,又称静态工厂方法模式(Static Factory Method Pattern). (2)工厂方法(Factory Meth

设计模式之二(简单工厂模式)

原文:设计模式之二(简单工厂模式) 前言 简单工厂模式根据提供的数据或者参数返回几个可能的类中的一个实例,说通俗点有点像面向对象编程中的多态性,一个基类,有多个派生类,在另外的调用程序中,根据参数来决定返回这个基类的哪个具体的派生类,返回值为基类类型,因为基类的引用可以指向派生类对象,而且这些所有的派生类都包含有基类的函数,也就是说派生类中有相同的函数,但是函数的实现可能不同. 下面我只是来演示一下简单工厂模式,代码不会太复杂.所以大家可以使用Submile Text工具. 使用方法博客文章链接

php设计模式之简单工厂模式详解_php技巧

本文以实例形式较为详细的介绍了PHP设计模式的简单工厂模式,对于进行PHP程序设计来说有很好的借鉴作用.具体如下: 一.概念 简单工厂模式 [静态工厂方法模式](Static Factory Method) 是类的创建模式 工厂模式的几种形态: 1.简单工厂模式(Simple Factory)又叫做 静态工厂方法模式(Static Factory Method) 2.工厂方法模式(Factory Method)又叫做 多态性工厂模式(Polymorphic Factory) 3.抽象工厂模式(A

《设计模式》学习笔记2——简单工厂模式

定义 简单工厂模式并不属于GoF(Gang of Four四人组)23中设计模式,有些地方的解释说因为简单工厂模式太简单,所以23中设计模式就没有单独列出. 但是简单工厂模式在实际的应用中却很常用,因此在刘伟老师的<设计模式>一书中就还是列了出来. 简单工厂模式引用书中的定义如下: 简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类.因为在简单工厂模式中用于创建实例的方法是静态(static)方法

设计模式C#描述之——简单工厂模式

设计 前言:设计模式是软件开发领域的精髓之一.学好设计模式是目前每一个开发人员的必修课.目前关于设计模式的书很多,其中比较好的有GOF那本的中译本,但并不很适合初学者.还有一本是<JAVA与模式>,比较适合初学者使用,在此强烈推荐.但这本书的不足之处是一些地方讲的过于繁琐,很多地方只须简单说明一下即可,却大费笔墨,使得书籍很厚,看起来费力.而且是用JAVA描述的,这使得一些只懂C#的人无从下手.我是一个.net的拥护者,为了看这本书我特意看了些JAVA的书,感觉JAVA在书籍的多样性方面比 .

设计模式-简单工厂模式(SimpleFactory-C#)

设计 <java与模式> 上面那本书上的例子举的是园丁和果园的例子,学习设计模式最好在生活中自己找个例子 实践一下,下面是我自己的一个例子,是讲快餐店的例子,快餐店提供很多食物,比如 面条,米饭,面包.首先定义了一个Food接口,然后这些食物都从它来继承,定义了一个大厨 他包办所有食物的制作工作,这就是我所理解的简单工厂模式的概念,下面是源代码: using System; namespace SimpleFactoryPattern{ /// <summary> /// 简单工厂

设计模式之简单工厂模式(Simple Factory Pattern)

设计 工厂模式 THE FACTORY PATTERN 在面向对象(OO)程序中,我们经常看到的一种模式就是简单工厂模式(Simple Factory Pattern).简单工厂模式根据提供给它的数据,返回几个可能类中的一个类的实例.通常它返回的类都有一个共同的父类和共同的方法,但每个方法执行的认为不同,而且根据不同的数据进行了优化.简单工厂模式实际上不属于23个GOF模式,但它可以作为工厂方法模式(FACTORY Method)的一个引导. 工厂模式如何工作 为了便于理解简单工厂模式,可以看下

设计模式的C++实现之简单工厂模式

简单工厂模式按照设计模式类型分的话是属于创建型模式,他是工厂模式中最简单的一种,他不属于GoF 23中设计模式之一,但是是简单实用的.他是有一个工厂对象来决定创建哪一种对象的实例. 实现比较简单,这里我只贴出类图和调用方法: 调用方法: IProduct * simpleFactory::Create(std::string className) { if( className == "Ipad") return new Ipad(); if(className == "IP

解读设计模式----简单工厂模式(SimpleFactory Pattern)

一.模式概述 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现,学习了此模式可以为后面的很多中模式打下基础.那好,我们就来了解下什么是简单工厂模式? 我们来分析一个现实生活中的案例,每天早晨起床洗唰后是干什么呢?吃早餐(这里只针对在外吃早餐的上班族