【问题标题】:FactoryClass vs a Normal Java Class [closed]FactoryClass 与普通 Java 类 [关闭]
【发布时间】:2013-07-15 14:29:57
【问题描述】:

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

现在,它们与java.lang.util 中的普通类有何不同

我的意思是普通类,其实例的创建方式如下。

Date d=new Date();

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

【问题讨论】:

  • 很难知道这里问的是什么。问题是什么(没有问号很难确定)?
  • “正常”是什么意思?工厂类是正常的。实际上java.lang.util内部有工厂类(比如Collections类。工厂是一种设计模式,FactoryClasses实现了该设计模式。

标签: java class factory


【解决方案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/

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-11-25
      • 2017-01-08
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      • 2019-06-21
      • 1970-01-01
      • 2014-01-13
      • 2016-05-16
      相关资源
      最近更新 更多