public interface BWM {
//汽车接口
void showInfo();
}
class BWM3 implements BWM{
@Override
public void showInfo() {
System.out.println("这是宝马三系车");
}
}
class BWM5 implements BWM{
@Override
public void showInfo() {
System.out.println("这是宝马五系车");
}
}
class BWM7 implements BWM{
@Override
public void showInfo() {
System.out.println("这是宝马七系车");
}
}
public interface BWMFactory {
//汽车生产工厂接口
//返回具体车型不合适,直接返回宝马车接口
BWM productBWM();
}
class BWM3Factory implements BWMFactory{
@Override
public BWM productBWM() {
System.out.println("这是宝马三系生产工厂");
return new BWM3();
}
}
class BWM5Factory implements BWMFactory{
@Override
public BWM productBWM() {
System.out.println("这是宝马五系生产工厂");
return new BWM5();
}
}
class BWM7Factory implements BWMFactory{
@Override
public BWM productBWM() {
System.out.println("这是宝马七系生产工厂");
return new BWM7();
}
}
public class Test {
public static void main(String[] args) {
BWM b3 = new BWM3Factory().productBWM();//接口接收
b3.showInfo();
BWM b5 = new BWM5Factory().productBWM();
b5.showInfo();
BWM b7 = new BWM7Factory().productBWM();
b7.showInfo();
}
}
上述代码通过工厂把new对象隔离,通过产品的接口可以接收不同实际产品的实现类,实例的类名改变不影响其他合作开发人员的编程。例如,想要把宝马3改为宝马1,直接修改名字即可,实例的实现没有用到宝马3,不需要任何改变。