工厂方法模式是简单工厂模式的衍生,解决了许多简单工厂模式的问题。
首先完全实现‘开-闭 原则’,实现了可扩展。其次更复杂的层次结构,可以应用于产品结果复杂的场合。
工厂方法模式的对简单工厂模式进行了抽象。有一个抽象的Factory类(可以是抽象类和接口),这个类将不在负责具体的产品生产,而是只制定一些规范,具体的生产工作由其子类去完成。在这个模式中,工厂类和产品类往往可以依次对应。即一个抽象工厂对应一个抽象产品,一个具体工厂对应一个具体产品,这个具体的工厂就负责生产对应的产品。
具体:实体工厂实现抽象工厂,实体产品实现抽象产品;抽象工厂生产抽象产品,实体工厂生产实体产品;实体工厂A生产实体产品A,实体工厂B生产实体产品B。
实例代码:
package com.heng;
public interface InterfaceFactory {
public InterfacePhone creatPhone();
}
package com.heng;
public class AndroidFactory implements InterfaceFactory{
public InterfacePhone creatPhone() {
return new AndroidPhone();
}
}
package com.heng;
public class AppleFactory implements InterfaceFactory{
public InterfacePhone creatPhone() {
return new ApplePhone();
}
}
package com.heng;
public interface InterfacePhone {
public void name();
}
package com.heng;
public class AndroidPhone implements InterfacePhone{
public void name() {
System.out.println("我是Android手机");
}
}
package com.heng;
public class ApplePhone implements InterfacePhone{
public void name() {
System.out.println("我是苹果手机");
}
}
package com.heng;
public class Test {
public static void main(String[] args) {
//生产一个Android手机
InterfaceFactory androidFactory = new AndroidFactory();
InterfacePhone androidPhone = androidFactory.creatPhone();
androidPhone.name();
//生产一个苹果手机
InterfaceFactory appleFactory = new AppleFactory();
InterfacePhone applePhone = appleFactory.creatPhone();
applePhone.name();
}
}