C#写的工厂模式
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#写的工厂模式的更多相关文章
- Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)
jquery提供的serialize方法能够实现. $("#searchForm").serialize();但是,观察输出的信息,发现serialize()方法做的是将表单中的数 ...
- 用 Flask 来写个轻博客 (18) — 使用工厂模式来生成应用对象
Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 工厂模式 使用工厂方法 Factory Method 创建 app 对 ...
- 从接口、抽象类到工厂模式再到JVM来总结一些问题
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习! 涉及到的知识点总结如下: 为什么使用接口? 接口和抽象类的区别 简单工厂模式总结 Java中new和newInstance的区别 J ...
- 面向对象设计模式纵横谈:Abstract Factory 抽象工厂模式(笔记记录)
今天是设计模式的第二讲,抽象工厂的设计模式,我们还是延续老办法,一步一步的.演变的来讲,先来看看一个对象创建的问题. 1.如何创建一个对象 常规的对象创建方法: 这样的创建对象没有任何问题, ...
- java工厂模式
(1)概念大白话:java工厂模式就是客户端(main函数)要创建对象觉得麻烦就让另外一个叫工厂的类帮它创建,然后自己每次要创建对象就叫工厂帮它弄,举个例子,在没有工厂这个"手下" ...
- Objective-C 工厂模式(下) -- 抽象工厂模式
相比简单工厂模式, 只有一个工厂 能生产的手机也是固定的 抽象工厂模式类似于有很多家工厂, 当用户要买什么手机就创建对应的工厂去生产 比如用户要买iPhone就创建一个Apple工厂来生产手机, 要买 ...
- Objective-C 工厂模式(上) -- 简单工厂模式
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂 ...
- Java设计模式之工厂模式(Factory)
前言: 前面学习了建造者设计模式,接下来学习一下Retrofit中使用的另外一个设计模式,工厂设计模式!!!里面采用工厂模式使得数据转换得到完全解耦,工厂模式的好处用到了极致,如此好的设计模式我们怎能 ...
- php实现设计模式之 简单工厂模式
作为对象的创建模式,用工厂方法代替new操作. 简单工厂模式是属于创建型模式,又叫做静态工厂方法模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例. 工厂 ...
随机推荐
- 网站Web性能测试:ApacheBench,Webbench,http_load使用教程
网站Web性能测试:ApacheBench,Webbench,http_load使用教程 Web服务器 欲思 10个月前 (05-25) 0评论 一个网站或者博客到底能够承受多大的用户访问量经常是 ...
- Linux 调优方案, 修改最大连接数-ulimit
Linux对于每个用户,系统限制其最大进程数.为提高性能,可以根据设备资源情况,设置各linux 用户的最大进程数 可以用ulimit -a 来显示当前的各种用户进程限制.下面我把某linux用户的最 ...
- C-C和指针作业题(第一章)
在Linux下输入EOF使用Ctrl+D, Windows下输入EOF使用Ctrl+Z 编写一个程序,从标准输入读取几行输入,每行输入都要打印到标准输出上,前面要加上行号,在编写这个程序时要试图让程序 ...
- maven 错误处理
如果是方法找不到或者返回参数变了,那么肯定是包被升级了,那么到仓库下把对应的包删掉,然后maven自动下载最新的. 如果是包找不到,或者类找不到,那么把maven ->update maven可 ...
- 照片管家iOS-实现本地相册、视频、安全保护、社交分享源码下载Demo
<照片管家> APP功能: 1.本地照片批量导入与编辑 2.本地视频存储与播放 3.手势密码.数字密码.TouchID安全保护 4.QQ.微信.微博.空间社交分享 5.其他细节功能. 运用 ...
- HDUOJ------2398Savings Account
Savings Account Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- HDUOJ-----2068RPG的错排
RPG的错排 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- 房产地图google map的初步应用点滴.1)(转)
房产地图google map的初步应用点滴.1)房产地图google map的初步应用点滴.2)房产地图google map的初步应用点滴.3) 房产地图google map的初步应用点滴.4) 以前 ...
- PLSQL_统计信息系列01_统计信息的概念和重要性
2014-12-18 Created By BaoXinjian
- PowerDesigner列名作为注释
Tools -> Execute Commands -> Edit/Run Script 执行以下脚本: Option Explicit ValidationMode = True Int ...