工厂模式
前面我有跟大家分享过简单的工厂模式,里面有提到简单工厂模式的缺点"难以扩展",这一缺点在工厂模式里面会解决掉。哪么今天我就来跟大家分享下工厂模式。
话不多说我们先来看一个工厂模式的例子先:
public abstract class A//工厂类
{
public abstract D abstractA();
}
public class B:A
{
public override D abstractA()
{
return new E();
}
}
public class C:A
{
public override D abstractA()
{
return new F();
}
}
public abstract class D
{
public avstact void prind();
}
public class E:D
{
public override void prind()
{
Console.WriteLine("我是E");
}
}
public class F:D
{
public override void prind()
{
Console.WriteLine("我是F");
}
}
class G
{
statric void Main(string []arge)
{
A ab=new B();
A ac=new C();
D de=ab.abstractA();
D df=ac.absrtactA();
de.prind();
df.prind();
}
}
输出结果:
我是E
我是F
从代码里我们可以看出工厂模式使用了多态性涉及的几个概念中的抽象方法及重写(不知道多态性的几种概念的可以看看我前面写的多态性),这样我们如果要想在加多个H就只要添加两个类,重写两个抽象类中的抽象方法在用同样的方法调用就ok了;扩展起来将会容易,也符合了开闭原则(即对扩展开通,对修改关闭)。
如有错误或不足之处欢迎指正,谢谢!!!