program.cs file

using System;
using System.Collections.Generic;
using System.Text; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
#region 实现上逆
DVD dvd = new DVD();
Console.WriteLine(dvd.PlayVideo()); VCD vcd = new VCD();
Console.WriteLine(vcd.PlayVideo());
#endregion
#region 实现多态
Test();
#endregion }
static void Test()
{
VideoShow vs;
vs = new DVD();
Play(vs); vs = new VCD();
Play(vs);
}
static void Play(VideoShow vs)
{
string str = vs.PlayVideo();
Console.WriteLine(str);
}
}
public abstract class VideoShow
{
public abstract string PlayVideo();
}
public class VCD:VideoShow
{
public override string PlayVideo()
{
return "我放的是VCD";
}
}
public class DVD:VideoShow
{
public override string PlayVideo()
{
return "我放的是DVD";
}
}
}

create.cs file

using System;
using System.Collections.Generic;
using System.Text; namespace ConsoleApplication1
{
class Create
{
public static VideoShow factory(string VideoName)
{
switch (VideoName.ToUpper())
{
case "DVD":
return new DVD();
case "VCD":
return new VCD();
}
return null;
}
}
public class Test
{
public static void Main()
{
VideoShow vs = Create.factory("DVD");
vs.PlayVideo(); vs = Create.factory("VCD");
vs.PlayVideo();
}
}
}

codefile

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();
} static void TEST()
{
VideoShow vs;
vs = new DVD();
Play(vs); vs = new VCD();
Play(vs);
}
static void Play(VideoShow vs)
{
string str = vs.PlayVideo();
Console.WriteLine(str);
}
}
public abstract class VideoShow
{
public abstract string PlayVideo();
}
public class VCD : VideoShow
{
public override string PlayVideo()
{
return "我放的是VCD";
}
}
public class DVD:VideoShow
{
public override string PlayVideo()
{
return "我放的是DVD";
}
}

接口不可以实例化。但是接口对象可以指向它的实现类对象。

C#里面比较有特点的东西
class Example
{
private static Example instance;
private Example() {}
public static Example Instance//跟java的set和get方法差不多,但是形式那么怪,不是函数,没有参数,但是有函数体
{
 get
 {
 if(null==instance)
 {
 instance=new Example();

}
 return instance;
 }
}

}

C#写的工厂模式的更多相关文章

  1. Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)

    jquery提供的serialize方法能够实现. $("#searchForm").serialize();但是,观察输出的信息,发现serialize()方法做的是将表单中的数 ...

  2. 用 Flask 来写个轻博客 (18) — 使用工厂模式来生成应用对象

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 工厂模式 使用工厂方法 Factory Method 创建 app 对 ...

  3. 从接口、抽象类到工厂模式再到JVM来总结一些问题

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习! 涉及到的知识点总结如下: 为什么使用接口? 接口和抽象类的区别 简单工厂模式总结 Java中new和newInstance的区别 J ...

  4. 面向对象设计模式纵横谈:Abstract Factory 抽象工厂模式(笔记记录)

         今天是设计模式的第二讲,抽象工厂的设计模式,我们还是延续老办法,一步一步的.演变的来讲,先来看看一个对象创建的问题. 1.如何创建一个对象 常规的对象创建方法: 这样的创建对象没有任何问题, ...

  5. java工厂模式

    (1)概念大白话:java工厂模式就是客户端(main函数)要创建对象觉得麻烦就让另外一个叫工厂的类帮它创建,然后自己每次要创建对象就叫工厂帮它弄,举个例子,在没有工厂这个"手下" ...

  6. Objective-C 工厂模式(下) -- 抽象工厂模式

    相比简单工厂模式, 只有一个工厂 能生产的手机也是固定的 抽象工厂模式类似于有很多家工厂, 当用户要买什么手机就创建对应的工厂去生产 比如用户要买iPhone就创建一个Apple工厂来生产手机, 要买 ...

  7. Objective-C 工厂模式(上) -- 简单工厂模式

    简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂 ...

  8. Java设计模式之工厂模式(Factory)

    前言: 前面学习了建造者设计模式,接下来学习一下Retrofit中使用的另外一个设计模式,工厂设计模式!!!里面采用工厂模式使得数据转换得到完全解耦,工厂模式的好处用到了极致,如此好的设计模式我们怎能 ...

  9. php实现设计模式之 简单工厂模式

    作为对象的创建模式,用工厂方法代替new操作. 简单工厂模式是属于创建型模式,又叫做静态工厂方法模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例. 工厂 ...

随机推荐

  1. 微信小程序基于swiper组件的tab切换

    代码地址如下:http://www.demodashi.com/demo/14010.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

  2. 使用Python操作Memcached

    1.安装 yum install memcached easy_install python-memcached 2.操作memcached import memcache mc = memcache ...

  3. jquery checkbox选框操作

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  4. HDUOJ------2398Savings Account

    Savings Account Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  5. HDUOJ----Eddy's research I

    Eddy's research I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  6. 求不小于N且二进制串包含K个1的最小的数字

    给定正整数N,求一个最小正整数M(M>=N),使得M中连续1的个数不小于K. 输入格式:N K 其中N为大整数,只能进行字符串处理 首先要把N化为二进制串,考察这个二进制串的最后K位: 直接把这 ...

  7. JavaScript(select onchange)的网页跳转的简单实现

    方法一: <select   onchange="goUrl(this.options[this.selectedIndex])"> <option>==& ...

  8. java MessageFormat.format

    sql 语句中格式化,如果加入{}占位符,要替代的是整形变量,而恰好这个整形变量的位数超过4位, MessageFormat.format 会在这个整形变量中默认每隔三位加一个逗号,类似这样:1000 ...

  9. Linux内存初始化(四) 创建系统内存地址映射

    一.前言 经过内存初始化代码分析(一)和内存初始化代码分析(二)的过渡,我们终于来到了内存初始化的核心部分:paging_init.当然本文不能全部解析完该函数(那需要的篇幅太长了),我们只关注创建系 ...

  10. HDU 5402(Travelling Salesman Problem-构造矩阵对角最长不相交路径)

    Travelling Salesman Problem Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (J ...