抽象工厂方法
抽象工厂方法适合用于多种类多系列产品
现有三种产品:Phone,Watch,Pad
分别由三家公司:Apple,Sunsng,小米
UML设计图
核心实现代码
(1)抽象工厂类
public abstract class AbstractFactory {
public abstract AbstractPhone getPhone();
public abstract AbstractWatch getWatch();
public abstract AbstractPad getPad();
public static AbstractFactory getFactory(String brand)
{
AbstractFactory f=null;
if(brand.equals(AbstractFactory.IFACTORY)){f=new Factory_Apple();}
else if(brand.equals(AbstractFactory.MIFACTORY)){f=new Factory_Xiaomi();}
else if(brand.equals(AbstractFactory.SUNFACTORY)){f=new Factory_Samsung();}
return f;
}
(2)具体工厂类(以苹果为例)
public class Factory_Apple extends AbstractFactory {
//实现抽象工厂的抽象方法产生产品对象
@Override
public AbstractPhone getPhone() {
return new IPhone();
}
@Override
public AbstractWatch getWatch() {
return new IWatch();
}
@Override
public AbstractPad getPad() {
return new IPad();
}
}
(3)抽象产品类(以Phone为例)
public interface AbstractPhone {
public String getPhoneInfo();
}
(4)具体产品类(以IPhone为例)
public class IPhone implements AbstractPhone {
private String descrision="Iphone :This time, everything is possible";
@Override
public String getPhoneInfo() {
return descrision;
}}
(5)Client类
AbstractFactory bf=AbstractFactory.getFactory(brand);//指定品牌
if(product.equals("手机")){
AbstractPhone ph=bf.getPhone();info=ph.getPhoneInfo(); //指定种类}
else if(product.equals("平板")){AbstractPad pd=bf.getPad(); info=pd.getPadInfo();
else if(product.equals("手表")){AbstractWatch wh=bf.getWatch(); info=wh.getWatchInfo();