工厂模式简介:通常应用程序通过new的方式来创建获取对象,不过为了将对象的创建和使用分离,代码解耦,将对象的创建和初始化交由工厂来做,这就是工厂模式。
工厂模式的优点:代码解耦,专业的事情专业的人做。Spring的BeanFactory就是采用的工厂模式,根据传入的唯一标识来获取bean对象。
一、一个简单工厂
public class PhoneFactory {
Phone getPhone(String name){
if("Apple".equals(name)){
return new Apple();
}else if("华为".equals(name)){
return new HuaWei();
}else if("小米".equals(name)){
return new XiaoMi();
} else {
throw new RuntimeException("没有对应的手机返回");
}
}
}
简单工厂:根据传入的参数不同,生产不同的手机对象
二、抽象工厂
因为简单工厂可扩展性不是很高,所以有了下面的进阶版:
抽象工厂类:
public abstract class AbstractPhoneFactory {
abstract Apple getApplePhone();
abstract XiaoMi getXiaoMiPhone();
abstract HuaWei getHuaWeiPhone();
}
工厂实现类:
public class PhoneFactory2 extends AbstractPhoneFactory {
Apple getApplePhone() {
return new Apple();
}
XiaoMi getXiaoMiPhone() {
return new XiaoMi();
}
HuaWei getHuaWeiPhone() {
return new HuaWei();
}
}