设计模式之工厂模式
简单工厂模式
返回对象的类可以根据输入参数的不同而不同
简单工厂:唯一工厂类,一个产品抽象类,工厂类的创建方法依据入参判断并创建具体产品对象。
public class SimpleFactory {
public static Phone createPhone(String phoneName) {
if ("A".equals(phoneName)) return new PhoneA();
if ("B".equals(phoneName)) return new PhoneB();
return null;
}
}
class Phone {}
class PhoneA extends Phone {}
class PhoneB extends Phone {}
工厂模式
工厂方法:多个工厂类,一个产品抽象类,利用多态创建不同的产品对象,避免了大量的if-else判断。
public interface PhoneFactory {
Phone createPhone();
}
public class HuaweiFactory implements PhoneFactory {
@Override
public Phone createPhone() {
return new P40();
}
}
public class IphoneFactory implements PhoneFactory {
@Override
public Phone createPhone() {
return new Iphone4();
}
}
public interface Phone {}
public class P40 implements Phone{}
public class Iphone4 implements Phone{}
抽象工厂模式
抽象工厂:多个工厂类,多个产品抽象类,产品子类分组,同一个工厂实现类创建同组中的不同产品,减少了工厂子类的数量
public interface AbstractFactory {
PhoneShell createPhoneShell();
Phone createPhone();
}
class Brand1Factory implements AbstractFactory {
@Override
public PhoneShell createPhoneShell() {
return new PlasticShell();
}
@Override
public Phone createPhone() {
return new Iphone();
}
}
class Brand2Factory implements AbstractFactory {
...
}
interface PhoneShell {}
class PlasticShell implements PhoneShell {}
interface Phone {}
class Iphone implements Phone {}