工厂方法模式:
1. 避免了简单工厂的缺点,不完全满足OCP原则(开闭原则)
2. 工厂方法模式和简单工厂模式最大的不同在于简单工厂模式只有一个(对于一个项目或者一个模块而言)工厂类,而工厂方法模式有一组实现了相同接口的工厂类。
类图:
实例代码:
package com.pmj.factoryMethod;
/**
* 定义一个汽车的接口
* @author PP_boy
*
*/
public interface Car {
void run();
}
package com.pmj.factoryMethod;
/**
* Car的实现类:Audi(奥迪)
* @author PP_boy
*
*/
public class Audi implements Car{
@Override
public void run() {
System.out.println("奥迪在跑");
}
}
package com.pmj.factoryMethod;
/**
* Car的实现类:BMW(宝马)
* @author PP_boy
*
*/
public class BMW implements Car{
@Override
public void run() {
System.out.println("宝马在跑");
}
}
package com.pmj.factoryMethod;
/**
* 创建工厂的接口
* @author PP_boy
*
*/
public interface CarFactory {
Car createCar();
}
package com.pmj.factoryMethod;
/**
* 奥迪工厂
* @author PP_boy
*
*/
public class AudiFactory implements CarFactory{
@Override
public Car createCar() {
return new Audi();
}
}
package com.pmj.factoryMethod;
/**
* 宝马工厂
* @author PP_boy
*
*/
public class BMWFactory implements CarFactory{
@Override
public Car createCar() {
return new BMW();
}
}
package com.pmj.factoryMethod;
public class Client {
public static void main(String[] args) {
//通过工厂创建对象实例
Car audi = new AudiFactory().createCar();
Car bmw = new BMWFactory().createCar();
//调用run方法
audi.run();
bmw.run();
}
}