目的:实现调用者和创建者的分离
简单工厂:
interface Car {
void run();
}
class Audi implements Car {
public void run() {
System.out.println("奥迪跑");
}
}
class BYD implements Car {
public void run() {
System.out.println("比亚迪跑");
}
}
public class Carfactory {
public static Car getCar(String type) {
if ("奥迪".equals(type)) {
return new Audi();
} else if ("奥迪".equals(type)) {
return new BYD();
} else {
return null;
}
}
}
优点:实现了调用者和创建者的分离
缺点:软工需要扩充功能,就需要对现有功能进行修改,违反了开闭原则(对扩展开放,对修改封闭)
工厂方法模式:
public class Carfactory {
public static void main(String[] args) {
Car a = new AudiFactory().getCar();
Car b = new BYDFactory().getCar();
a.run();
b.run();
}
}
interface Car {
void run();
}
class Audi implements Car {
public void run() {
System.out.println("奥迪跑");
}
}
class BYD implements Car {
public void run() {
System.out.println("比亚迪跑");
}
}
//工厂接口
interface Factory {
Car getCar();// 抽象类,返回一个Car型的值
}
//两个工厂类
class AudiFactory implements Factory {
public Car getCar() {
return new Audi();
}
}
class BYDFactory implements Factory {
public Car getCar() {
return new BYD();
}
}