首先,在工厂模式中,核心的工厂类不再负责所有的产品的创建,而是将具体的创建的工作交给子类去做。这个核心类则摇身一变,成为一个抽象工厂角色,仅仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。这种工厂方法模式可以用来允许系统不再修改具体工厂角色的情况下引入新的产品
1) 抽象工厂(Creator)角色:担任整个角色的是工厂模式的核心,它是与应用程序无关的。任何在模式中创建对象的工厂类都必须实现这个接口。在实际的系统中,这个角色经常以抽象java类实现。
2) 具体工厂(Concrete Creator)角色:担任整个角色的是实现了抽象工厂接口的具体java类。具体工厂角色与应用密切相关的逻辑,并且受到应用程序的调用以创建产品对象。
3) 抽象产品(Product)角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。
4) 具体产品(Concrete Product)角色:这个角色实现了抽象产品角色所声明的接口。工厂方法模式所创建的每一个对象都是某个具体产品角色的实例。