工厂方法模式简称工厂模式,属于创建型模式的一种。
在工厂方法模式中,工厂父类负责创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象。由工厂子类来进行产品类的实例化操作。
工厂方法模式代码实战:
水果类接口
package com.create.method.factory;
public interface Fruit {
/**
* 获取对应的水果种类
*/
public void getFruitType();
}
苹果实现类
package com.create.method.factory;
public class Apple implements Fruit {
@Override
public void getFruitType() {
System.out.println("这是苹果");
}
}
香蕉实现类
package com.create.method.factory;
public class Banana implements Fruit {
@Override
public void getFruitType() {
System.out.println("这是香蕉");
}
}
然后定义水果工厂接口
package com.create.method.factory;
public interface FruitFactory {
/**
* 创建水果接口
* @return
*/
public Fruit createFruit();
}
对应的工厂子类
package com.create.method.factory;
public class AppleFactory implements FruitFactory {
@Override
public Fruit createFruit() {
Fruit fruit = new Apple();
return fruit;
}
}
package com.create.method.factory;
public class BananaFactory implements FruitFactory {
@Override
public Fruit createFruit() {
Fruit fruit = new Banana();
return fruit;
}
}
方法执行
package com.create.method.factory;
public class Client {
public static void main(String[] args) {
//工厂方法模式
FruitFactory fruitFactory = new AppleFactory();
fruitFactory.createFruit().getFruitType();
}
}
运行结果:这是苹果
工厂方法模式的优点:
只需关心所需产品对应的工厂,无需关心创建的细节。
加入新产品无需修改任何代码,只需添加一个具体工厂和具体产品即可,提高系统的扩展性,符合了开闭原则。
缺点:
添加新产品时需要编写新的具体产品类和对应的具体工厂类,系统中的类的个数将成对增加,一定程度上增加了系统的复杂度。