工厂方法和抽象工厂

来源:互联网 发布:英语听力软件哪个好 编辑:程序博客网 时间:2024/04/28 05:36

       在简单工厂设计模式,以一个例子来介绍了简单工厂的应用。那为什么要工厂方法和抽象工厂呢?知道其中的原因是比较重要的。

       一直在围绕面向对象的设计原则,这些原则就是面向对象设计的好处:重用性、可扩展性和可维护性。重用性是可以不加修改的应用在其它的地方,这个是相当难的,关键在于抽象;可扩展性是可以增加其它的类,其实就是在实际的应用中就是面向接口编程,实际一个接口呗;可维护性是代码容易维护。在面向对象中有一个重要的原则是“开-闭”原则,就是对内是闭的,不能修改原有的代码,对外是开的,是可扩展的。

      ok,讲了前面的一通,再看看简单工厂的不足之处,水果是一个抽象的东西,下面有很多具体的实现,但是有一点,比如苹果,它就有很多的种类,烟台苹果,红富士等等,是不是有这样的考虑,单独有一个类专门生成苹果类呢?其它的水果也有一系列的品种,正是如此,应该有一个抽象的类它是生产水果的,它的子类是生成各自品种的水果。这就是工厂方法出现的原因,就是把原来的工厂类进行抽象,具体的实现延迟到子类去出现。

      再看看抽象工厂,我们之前的代码都是生产一种水果,抽象工厂是生成组合的产品,并且这些组合的产品是不相交的,即是不同领域的产品。比如有A类,它有两个品种,又有B类,它也有两个品种,这样组合起来就有4种情况,所以理论上有4个工厂类。

     到现在应该明白了吧,简单工厂就是生产一个产品,工厂方法就是把产品的实现延迟到子类工厂的生产,抽象工厂就是生成组合产品的。

原创粉丝点击