说明
工厂方法(Factory Method)模式是一种工厂模式,也叫多态性工厂(Poloymorphic Factory)模式。
工厂方法模式涉及如下角色:
- 抽象工厂角色:给出具体工厂角色必须实现的接口。
- 具体工厂角色:实现抽象工厂的接口,了解创建具体产品的逻辑,创建具体的产品。
- 抽象产品角色:给出具体产品的共同接口。可以使用标记接口(即接口是空的)。
- 具体产品角色:实现抽象产品的接口。
- 客户端角色:调用工厂角色创建具体的产品。
一般来说,工厂角色的层级和产品角色的层级是相对应的。先把产品角色的层级规划好,再规划工厂角色的层级。
示例
一个简单的示例
定义一个抽象产品,这是一个标记接口:
package com.thb;public interface Graphic {}
定义两个具体产品:
package com.thb;public class Circle implements Graphic {}
package com.thb;public class Rectangle implements Graphic {}
定义一个抽象工厂:
package com.thb;public interface Factory {Graphic create();
}
因为有两个具体产品,所以定义两个具体工厂:
package com.thb;public class CircleFactory implements Factory {@Overridepublic Graphic create() { return new Circle();}}
package com.thb;public class RectangleFactory implements Factory {@Overridepublic Graphic create() { return new Rectangle();}}
定义一个客户端,进行调用:
package com.thb;public class Client {private static Graphic circle;private static Graphic rectangle;private static Factory circleFactory;private static Factory rectangleFactory;public static void main(String[] args) {circleFactory = new CircleFactory();rectangleFactory = new RectangleFactory();circle = circleFactory.create();rectangle = rectangleFactory.create();}}