简单工厂模式:
第一:创建一个面条的抽象类,或者接口
public abstract class Noodle {
public abstract void desc();
}
第二:创建实体类,继承面条的抽象类或者实现接口
public class LZNoodle extends Noodle {
@Override
public void desc() {
System.out.println("兰州拉面");
}
}
public class PAONoodle extends Noodle {
@Override
public void desc() {
System.out.println("泡面");
}
}
第三:创建简单工厂类,并且创建静态方法,在方法内new 相关对象
public class SimpleNoodleFactory {
public static final int TYPE_LZ = 1;//兰州拉面
public static final int TYPE_PAO = 2;//泡面
public static Noodle createNoodle(int type){
switch(type){
case TYPE_LZ:
return new LZNoodle();
case TYPE_PAO:
return new PAONoodle();
default:
return new PAONoodle();
}
}
}
第五,测试代码
public class SimpleFactoryMain {
public static void main(String[] args){
Noodle noodle = SimpleNoodleFactory.createNoodle(SimpleNoodleFactory.TYPE_LZ);
noodle.desc();
}
}
特点:
- 它是一个具体的类,非接口、抽象类。有一个重要的create()方法,利用if或者switch创建产品并返回。
- create()方法通常是静态的,所以也称之为静态工厂。
缺点:
- 扩展性差(我想增加一种面条,除了新增一个面条产品类,还需要修改工厂类方法)
- 不同的产品需要不同额外参数的时候,不支持。