0

工厂类就像一个DriverManager.getConnection("...conn..."). 它们是类的类方法

现在,它们与普通课程有何不同,例如java.lang.util

通过普通类,我的意思是,其实例的创建如下所示。

Date d=new Date();

那么与上面提到的(日期类)相比,工厂类是什么?

4

2 回答 2

1

它们是“普通”类,但它们遵循工厂方法模式

工厂示例实现

工厂模式用于:

  • 创建对象而不将实例化逻辑暴露给客户端。
  • 通过通用接口引用新创建的对象

来自:http ://www.oodesign.com/factory-pattern.html

这是一个如何在java中执行此操作的示例

package designPatterns.creational.factory;

public class CarFactory {
    public static Car buildCar(CarType model) {
        Car car = null;
        switch (model) {
            case SMALL:
                    car = new SmallCar();
                    break;

            case SEDAN:
                    car = new SedanCar();
                    break;

            case LUXURY:
                    car = new LuxuryCar();
                    break;

            default:
                    // throw some exception
                    break;
            }
        return car;
    }
}

完整示例:http ://howtodoinjava.com/2012/10/23/implementing-factory-design-pattern-in-java/

于 2013-07-15T14:36:54.857 回答
1

您所说的工厂方法称为设计模式。工厂方法是一种创建模式,可以防止对构造函数进行硬编码,并且可能是最常见的面向对象设计模式之一。这里要实现的关键是工厂模式设计了一个用于创建对象的接口。它通过减少重复代码的数量来促进DRY 原则(不要重复自己)。

如果您的代码需要可移植,您需要避免在应用程序中硬编码构造函数调用。有时最好让子类决定实例化哪个类。

你问过工厂创建的对象和没有工厂创建的对象之间的区别吗?它们仍然是对象,您在幕后调用工厂方法的类正在创建一个对象并将其返回给您。有些对象非常复杂,使用预定义的接口来创建对象更有意义。最后,有时不应向用户公开有关创建对象的信息。

于 2013-07-15T14:38:35.677 回答