初试简单工厂

来源:互联网 发布:细说php第二版完整pdf 编辑:程序博客网 时间:2024/06/12 00:39

首先创建抽象角色 

 public abstract class yao
{
public abstract void eat();

}
 

定义了药的总类输出方法,下面的类是根据每个药品修改自己的内容,都继承自yao

class 感冒药 : yao
{
public override void eat()
{
Console.WriteLine("我吃了感冒药");
}
}
class 发烧药 : yao
{
public override void eat()
{
Console.WriteLine("我吃了发烧药");
}
}
class 头疼药 : yao
{
public override void eat()
{
Console.WriteLine("我吃了头疼药");
}
}
class 牙疼药 : yao
{
public override void eat()
{
Console.WriteLine("我吃了牙疼药");
}
}

 

需要客户端输出的病的种类 public enum bing {感冒,发烧,头疼,牙疼 };  这是客户端的

接下来定义医生类 也就是简单工厂

简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。

class yisheng
{

  public static yao Create(bing bi)            ///创建yao的输出 传入枚举病
{
  yao yyy = null;         ///yao一上来为空  接下来满足付值
switch (bi)
{
case bing.发烧:
yyy = new 发烧药(); 
break;
case bing.头疼:
yyy = new 头疼药();
break;
case bing.牙疼:
yyy = new 牙疼药();
break;
case bing.感冒:
yyy = new 感冒药();
break;
}
return yyy;
}
}
 

最后客户端输出病,调用yisheng方法

public static class Program
{

static void Main(string[] args)
{
yao y = yisheng.Create(bing.感冒);
y.eat();
}
  }

工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.
 

初次使用还有太多不太明白...希望不给大家产生误导