我看了几篇关于工厂模式的文章,有一些地方没有弄懂,简单工厂模式很容易理解,但工厂模式有一点问题
我看了一下工厂模式都是先有一个工厂接口,它可以由多个工厂,所有的工厂都继承这个接口,每个产品也都具有相同的接口,这个都很好理解,但是我看了一下例子,每一次用户要得到一个产品,都必须先得到一个工厂然后,通过工厂接口提供的方法得到一个实力化的对象,这个和我直接实力化对象有什么区别他的优势有在那里
我看到文章说工厂模式比简单工厂模式的优势在于,他的扩展性,但是看例子,每一次如果有新的产品,都必须先生成一个工厂,他的扩展性又是从什么地方体现

解决方案 »

  1.   

    工厂模式都是先有一个工厂接口?这话不完全正确,工厂类可以独立存在,也可以在抽象类中定义它的Create方法
      

  2.   

    都必须先得到一个工厂然后,通过工厂接口提供的方法得到一个实力化的对象,这个和我直接实力化对象有什么区别他的优势有在那里?举例来说,如果你定义数据连接如OracleConnection如
    OracleConnection conn = new OracleConnection();这时,你争对的是特定的数据提供者,如果你需要换成SqlConnection,你是否会改成
    SqlConnectionconn conn = new SqlConnection();面象对象的精髓是针对接口编程,如果你这样定义
    IConnectionconn conn = null;当然需要连接时conn  = ConnectionFactory.Create();ConnectionFactory.Create()根据你的配置文件或参数,把IConnectionconn的具体实体放在使用的时候,这样是不是更灵活。应用接口的好处很多再比如你有一个方法
    public void Eate(IFood food)如果你这样定义
    public void Eate(Rice food)你说哪一个应用更灵活?public void Open()
      

  3.   

    那帮我看一下我这么做算不算工厂模式我有一个command的容器纯放各种继承了ICommand接口所有类,这个接口提供查询方法,我将他放到容器里,容器会循环调用这些command去执行这算是工厂模式否