工厂方法和抽象工厂的联系与区别
2020-06-08 本文已影响0人
卢纪超
一.抽象工厂和工厂方法的概念
抽象工厂:提供一个接口,用来创建相关或依赖对象的家族,而不需要明确指定具体类
工厂方法:定义了一个创建对象的接口,单由自雷决定要实例化的类是拿一个.工厂方法让类把实例化推迟到了子类
二.抽象工厂和工厂方法的联系
抽象工厂的每个方法实际上看起来都像是工厂方法.每个方法都被声明成抽象,而子类的方法覆盖这些方法来创建某些对象.
抽象工厂的方法经常以工厂方法的方式实现.抽象工厂的任务是定义一个负责创建一组产品的接口.这个接口内的每个方法都负责创建一个具体的产品,同时利用实现抽象工厂的子类来提供具体的做法.
所以在抽象工厂中利用工厂方法实现生产方法是相当自然的做法.
三.抽象工厂和工厂方法的区别
1.创建对象的方法不同
工厂方法:是通过继承的方式创建对象.这就意味着,利用工厂方法创建对象,需要扩展一个类,并覆盖它的工厂方法.通过子类创建,只需要知道它们所使用的抽象类型,由子类负责决定具体类型.换句话说,工厂方法只负责从具体类型中解耦.
抽象工厂:是通过对象的组合.提供一个用来创建一个产品家族的抽象类型,这个类型的子类定义了产品的方法.要想使用这个工厂,必须先实例化它,然后将它传入到一些针对抽象类型缩写的代码中.
2.功能
工厂方法:把客户代码从需要实例化的具体类中解耦.或者目前还不知道将来需要实例化那些具体类时,也可以用它.使用时只需要将工厂方法继承给子类,并实现它的工厂方法.
抽象工厂:需要创建产品家族和让制造的相关产品家族集合起来时,您可以使用它.
四.抽象方法和方法工厂举例:
1.工厂方法
工厂方法2.抽象工厂
抽象工厂