一看就懂的设计模式(二,工厂模式)
2016-05-19 07:48
288 查看
本文是在简单工厂的基础上进行编写的,可以参考简单工厂比较学习,看看都有哪些异同。
namespace 工厂模式
{
class Program
{
static void Main(string[] args)
{
IFactory dogF = new DogFactory();
Animal dog1 = dogF.GetInstance();
dog1.Show();
IFactory pigF = new PigFactory();
Animal pig1 = pigF.GetInstance();
pig1.Show();
Console.ReadKey();
}
}
/// <summary>
/// 先定义一个基类
/// </summary>
public class Animal
{
public virtual void Show() { }
}
/// <summary>
/// 子类继承基类
/// </summary>
public class Dog : Animal
{
public override void Show()
{
Console.WriteLine("这是dog类方法");
}
}
public class Pig : Animal
{
public override void Show()
{
Console.WriteLine("这是pig类方法");
}
}
/// <summary>
/// 工厂类
/// </summary>
public interface IFactory
{
Animal GetInstance();
}
/// <summary>
/// 具体的工厂
/// </summary>
public class DogFactory : IFactory
{
public Animal GetInstance()
{
return new Dog();
}
}
public class PigFactory : IFactory
{
public Animal GetInstance()
{
return new Pig();
}
}
}
namespace 工厂模式
{
class Program
{
static void Main(string[] args)
{
IFactory dogF = new DogFactory();
Animal dog1 = dogF.GetInstance();
dog1.Show();
IFactory pigF = new PigFactory();
Animal pig1 = pigF.GetInstance();
pig1.Show();
Console.ReadKey();
}
}
/// <summary>
/// 先定义一个基类
/// </summary>
public class Animal
{
public virtual void Show() { }
}
/// <summary>
/// 子类继承基类
/// </summary>
public class Dog : Animal
{
public override void Show()
{
Console.WriteLine("这是dog类方法");
}
}
public class Pig : Animal
{
public override void Show()
{
Console.WriteLine("这是pig类方法");
}
}
/// <summary>
/// 工厂类
/// </summary>
public interface IFactory
{
Animal GetInstance();
}
/// <summary>
/// 具体的工厂
/// </summary>
public class DogFactory : IFactory
{
public Animal GetInstance()
{
return new Dog();
}
}
public class PigFactory : IFactory
{
public Animal GetInstance()
{
return new Pig();
}
}
}
相关文章推荐
- POJ 1204 AC自动机入门
- 【UVa】[156]Ananagrams
- centos 下安装PHP框架 Phalcon
- TVB-Gone 红外编码方法
- 收货地址
- [LintCode] Mini Twitter 迷你推特
- OC知识点
- Swift与OC之间的选择
- Objective-C语法汇总
- 产品经理,如何建立自己独特的产品观?(转)
- Android高斯模糊技术,实现毛玻璃效果
- PHP 生成图片缩略图函数
- 数的划分(NOIP2001)
- Discuz 中手机版指定访问地址
- java集合循环删除
- java集合循环删除
- LeetCode 24. Swap Nodes in Pairs(交换节点)
- LeetCode 23. Merge k Sorted Lists(K路合并)
- 心灵鸡汤之20160519
- 批处理与python代码混合编程的实现方法