要点
- 简单工厂模式也叫静态工厂模式(方法里面都为静态)。就是工厂类一般使用静态方法,通过接收的参数的不同来返回不同的对象实例。
- 对于增加的新产品无能为力!不修改代码的话,是无法扩展的。
这是个简单工厂实例
- 如何实现创建者和调用者的分离
- 首先建立个接口
interface Car {
void run();
}
- 然后是两个实现类
public class Benz implements Car{
@Override
public void run() {
System.out.println("我是奔驰!");
}
}
public class BMW implements Car{
@Override
public void run() {
System.out.println("我是宝马");
}
}
/**
* 不调用工厂的情况下
* @author Sakura
*
*/
public class Client01 {
public static void main(String[] args) {
Car c1=new Benz();
Car c2=new BMW();
c1.run();
c2.run();
}
}
控制台:
我是奔驰!
我是宝马
- 先建立工厂
/**
* 工厂
* @author Sakura
*
*/
public class CreatCarFactory{
//第一种实现方式,添加所有子类
public static Car creatCar(String type){
if("BMW".equals(type)){
return new BMW();
}else if("Benz".equals(type)){
return new Benz();
}else{
return null;
}
}
//第二种实现方式,为每个子类添加方式
public static Car creatBMW(){
return new BMW();
}
public static Car creatBenz(){
return new Benz();
}
}
- 简单的调用工厂(静态工厂模式)
/**
* 调用简单工厂
* @author Sakura
*
*/
public class Client02 {
public static void main(String[] args) {
Car c1=CreatCarFactory.creatCar("BMW");
Car c2=CreatCarFactory.creatCar("Benz");
Car c3=CreatCarFactory.creatBenz();
Car c4=CreatCarFactory.creatBMW();
c1.run();
c2.run();
c3.run();
c4.run();
}
}
控制台:
我是宝马
我是奔驰!
我是奔驰!
我是宝马