框架使用抽象类 - 工厂方法

时间:2012-01-25 12:55:11

标签: oop design-patterns factory-pattern

来自Addison Wesley - 设计模式。

(工厂方法)

  

框架使用抽象类来定义和维护对象之间的关系。框架通常也负责创建这些对象。

上述引文中作者的意思是什么? 框架代表什么,以及“如何”负责创建这些对象?

2 个答案:

答案 0 :(得分:0)

在如此普遍的水平上讨论这个问题并非易事。我会尝试。

通常,框架提供了一组在框架代码中使用的抽象类,但其绑定仅在运行时解析。

框架调用这些类的实例方法,您负责在代码中实现这些方法。

也就是说,在你的代码中,你将扩展这些类,并“填空”。

代码和框架代码之间的粘合是由这些抽象类(或接口,fwiw)定义的契约:框架知道给定的方法接受类型为K的参数,并返回类型T,因此可以安全地调用它,假设它的语义将被实现者尊重。

另一方面,当您实现该方法时,您隐式接受附加到它的契约,并根据与其相关的语义来实现它。

希望它足够清楚。

答案 1 :(得分:0)

OOP世界中的软件框架是一组类,它们提供程序员随后可以使用和扩展以创建应用程序的基本功能。让我们来看一个开发汽车框架的简单例子。它可能有一个名为“汽车”的抽象类,它不实现完整的汽车,但可能提供前进,停止和反向的基本方法。可能还有另一组轮子类。汽车类具有轮子(包含关系),并且该关系可以在抽象汽车类中定义。因此,框架“维护对象之间的关系”。

但是要使用抽象汽车课程,你需要创建一个具体的课程,例如福特皮卡车或法拉利跑车。您可以在此处使用工厂设计模式来创建这些类型车辆的具体实例。工厂类为框架创建不同类型汽车的特定实例以供使用。但在许多情况下,如果它是福特或法拉利,框架将无关紧要,它只是想调用前进,停止和反向的方法。它们如何实际实施(例如法拉利可以比福特加速更快)与框架无关。使用工厂类从框架中封装了这些细节。当它说“框架通常也负责创建这些对象”时,它指的是框架可以为汽车提供基本工厂,可以扩展以添加自己的汽车具体实现。