在petshop4.0中也用到了几个常用的设计模式:简单工厂模式,工厂方法模式,策略模式,并附之返射与配置文件.下面就来用我自己的理解用大白话说出来.
1.简单工厂模式.
比如A与B一起写代码,A负责前台,B负责后台,B写了两个类:X与Y,A负责调用,那么1.A怎么知道B写了X与Y两个类呢?2.B又增加了Z 类怎么办,3.A在代码里写了n个X x = new X(), B把X类改名或重写了怎么办.为了解决这些困难,就提出了简单工厂模式,说白了,有一个基类或接口,然后n个类从它继承,再写一个类作为工厂,里面有个静 态方法负责根据转入参数的不同返回从基类或接口继承的具体对象:
public interface IPerson
{
string GetName();
}
public class Kernel : IPerson
{
public string GetName()
{
return "Kernel";
}
}
public class Json : IPerson
{
public string GetName()
{
return "Json";
}
}
public class PersonFactory
{
public static IPerson CreateInstance(string name)
{
string path = ConfigurationManager.AppSettings["AssemblyName"];
string className = "";
switch (name)
{
case "kernel":
className = ConfigurationManager.AppSettings["kernelClass"];
break;
default:
className = ConfigurationManager.AppSettings["JsonClass"];
break;
}
return Assembly.Load(path).CreateInstance(className) as IPerson;
}
}
static void Main(string[] args)
{
IPerson p1 = PersonFactory.CreateInstance("kernel");
Console.WriteLine(p1.GetName());
IPerson p2 = PersonFactory.CreateInstance("Json");
Console.WriteLine(p2.GetName());
Console.ReadKey();
}
{
string GetName();
}
public class Kernel : IPerson
{
public string GetName()
{
return "Kernel";
}
}
public class Json : IPerson
{
public string GetName()
{
return "Json";
}
}
public class PersonFactory
{
public static IPerson CreateInstance(string name)
{
string path = ConfigurationManager.AppSettings["AssemblyName"];
string className = "";
switch (name)
{
case "kernel":
className = ConfigurationManager.AppSettings["kernelClass"];
break;
default:
className = ConfigurationManager.AppSettings["JsonClass"];
break;
}
return Assembly.Load(path).CreateInstance(className) as IPerson;
}
}
static void Main(string[] args)
{
IPerson p1 = PersonFactory.CreateInstance("kernel");
Console.WriteLine(p1.GetName());
IPerson p2 = PersonFactory.CreateInstance("Json");
Console.WriteLine(p2.GetName());
Console.ReadKey();
}