您的位置:首页 > 其它

简单工厂模式和工厂模式的实现例子

2012-08-06 17:48 393 查看
using System;
using System.Collections.Generic;
using System.Text;

namespace 工厂方法_雷锋工厂
{
class Program
{
static void Main(string[] args)
{

//
//基本方式:薛磊风代表大学生学习雷锋
LeiFeng xueleifeng = new Undergraduate();

xueleifeng.BuyRice();
xueleifeng.Sweep();
xueleifeng.Wash();

LeiFeng student1 = new Undergraduate();
student1.BuyRice();
LeiFeng student2 = new Undergraduate();
student2.Sweep();
LeiFeng student3 = new Undergraduate();
student3.Wash();

//简单工厂模式
LeiFeng studentA = SimpleFactory.CreateLeiFeng("学雷锋的大学生");
studentA.BuyRice();
LeiFeng studentB = SimpleFactory.CreateLeiFeng("学雷锋的大学生");
studentB.Sweep();
LeiFeng studentC = SimpleFactory.CreateLeiFeng("学雷锋的大学生");
studentC.Wash();

//工厂方法模式
IFactory factory = new UndergraduateFactory();
LeiFeng student = factory.CreateLeiFeng();//通过接口函数创建对象

student.BuyRice();
student.Sweep();
student.Wash();

Console.Read();
}
}

//雷锋
class LeiFeng
{
public void Sweep()
{
Console.WriteLine("扫地");
}

public void Wash()
{
Console.WriteLine("洗衣");
}

public void BuyRice()
{
Console.WriteLine("买米");
}
}

//学雷锋的大学生
class Undergraduate : LeiFeng
{ }

//社区志愿者
class Volunteer : LeiFeng
{ }

//简单雷锋工厂
class SimpleFactory
{
public static LeiFeng CreateLeiFeng(string type)
{
LeiFeng result = null;
switch (type)
{
case "学雷锋的大学生":
result = new Undergraduate();
break;
case "社区志愿者":
result = new Volunteer();
break;

}
return result;
}
}

//雷锋工厂
interface IFactory
{
LeiFeng CreateLeiFeng();
}

//学雷锋的大学生工厂
class UndergraduateFactory : IFactory
{
public LeiFeng CreateLeiFeng()
{
return new Undergraduate();
}
}

//社区志愿者工厂
class VolunteerFactory : IFactory
{
public LeiFeng CreateLeiFeng()
{
return new Volunteer();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: