您的位置:首页 > 其它

最简单的工厂模式

2013-03-28 10:58 281 查看
你想如果有多个类似的类,我们就需要实例化出来多个类。这样代码管理起来就太复杂了。
这个时候你就可以采用工厂方法来封装这个问题。


public interface IProduct { }
public class ConcreteProductA : IProduct { }
public class ConcreteProductB : IProduct { }

public class Factory
{
public IProduct Create()
{
// 工厂决定到底实例化哪个子类。
return new ConcreteProductA();
}
}


那么再延伸下,如果我要生产B怎么办

一般我们会想到,加入参数,好,说到参数,你想怎么加,呵呵,设计模式的作者给我一个例子,我觉得非常好,如果我们一般人,我想多数这么做

public IProduct Create(IProduct product)
{
//判断B是否实现了接口
//B b = new B();
//if (b.GetType().GetInterface("ISay") != null)
//{
//    //如果实现了接口“ISay”,...
//}
// 工厂决定到底实例化哪个子类。

}


但是我觉得作者这里给出了另外一种思维模式,让我们看看

public enum Category
{
A,
B
}

public static class ProductFactory
{
public static IProduct Create(Category category)
{
switch (category)
{
case Category.A:
return new ConcreteProductA();
case Category.B:
return new ConcreteProductB();
default:
throw new NotSupportedException();
}
}
}


并不是说这样非常好,但是这种思想还是值得在某些地方借鉴
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: