原理:实例化对象:用工厂化方法代替new操作
实例分析如下:
实现类的对象创建者CarFactory2和调用者Client02分离
不符合开闭原则(一个软件实体应该对扩展开放,对修改关闭)
下面例子中CarFactory2类中可以添加创建其他车子比如宝马的方法,没有对CarFactory2类的修改关闭
Car接口
package
com.bjsxt.factory.simplefactory;
public
interface
Car {
void
run();
}
实现类Audi
package
com.bjsxt.factory.simplefactory;
public
class
Audi
implements
Car {
@Override
public
void
run() {
System.out.println(
"奥迪再跑!"
);
}
}
实现类Byd
package
com.bjsxt.factory.simplefactory;
public
class
Byd
implements
Car {
@Override
public
void
run() {
System.out.println(
"比亚迪再跑!"
);
}
}
简单工厂类
package
com.bjsxt.factory.simplefactory;
public
class
CarFactory2 {
public
static
Car createAudi(){
return
new
Audi();
}
public
static
Car createByd(){
return
new
Byd();
}
}
package
com.bjsxt.factory.simplefactory;
public
class
Client02 {
//调用者
public
static
void
main(String[] args) {
Car c1 =CarFactory.createCar(
"奥迪"
);
Car c2 = CarFactory.createCar(
"比亚迪"
);
c1.run();
c2.run();
}
}