抽象工厂

参考《设计模式的艺术软件开发人员内功修炼之道》-刘伟 著

实验目的

抽象工厂可以理解为多态工厂的增强版,一个具体的工厂类负责生产一组不同产品

实验代码

package AbstractFactory;

interface OperationController{
    public void DoOperation();
}

class SymbianOperationController implements OperationController {

    @Override
    public void DoOperation() {
        // TODO Auto-generated method stub
        System.out.println("SymbianOperationController...");
    }

}
class AndroidOperationController implements OperationController {

    @Override
    public void DoOperation() {
        // TODO Auto-generated method stub
        System.out.println("AndroidOperationController...");
    }

}
class WindowsOperationController implements OperationController {

    @Override
    public void DoOperation() {
        // TODO Auto-generated method stub
        System.out.println("WindowsOperationController...");
    }

}

interface InterfaceController{
    public void DisplayInterface();
}

class SymbianInterfaceController implements InterfaceController{

    @Override
    public void DisplayInterface() {
        // TODO Auto-generated method stub
        System.out.println("SymbianInterfaceController...");
    }

}
class AndroidInterfaceController implements InterfaceController{

    @Override
    public void DisplayInterface() {
        // TODO Auto-generated method stub
        System.out.println("AndroidInterfaceController...");
    }

}
class WindowsInterfaceController implements InterfaceController{

    @Override
    public void DisplayInterface() {
        // TODO Auto-generated method stub
        System.out.println("WindowsInterfaceController...");
    }

}

interface OperationSystem{
    public OperationController getOperationController();
    public InterfaceController getInterfaceController();
}

class Symbian implements OperationSystem{

    @Override
    public OperationController getOperationController() {
        // TODO Auto-generated method stub
        return new SymbianOperationController();
    }

    @Override
    public InterfaceController getInterfaceController() {
        // TODO Auto-generated method stub
        return new SymbianInterfaceController();
    }

}
class Android implements OperationSystem{

    @Override
    public OperationController getOperationController() {
        // TODO Auto-generated method stub
        return new AndroidOperationController();
    }

    @Override
    public InterfaceController getInterfaceController() {
        // TODO Auto-generated method stub
        return new AndroidInterfaceController();
    }

}
class Windows implements OperationSystem{

    @Override
    public OperationController getOperationController() {
        // TODO Auto-generated method stub
        return new WindowsOperationController();
    }

    @Override
    public InterfaceController getInterfaceController() {
        // TODO Auto-generated method stub
        return new WindowsInterfaceController();
    }

}

public class AbstractFactoryTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        OperationSystem os = new Android();
        OperationController oc = os.getOperationController();
        InterfaceController ic = os.getInterfaceController();
        oc.DoOperation();
        ic.DisplayInterface();
    }

}

结果输出

AndroidOperationController...
AndroidInterfaceController...

总结

  • 抽象工厂相比多态工厂减少了工厂类的数量
  • 工厂要求初期设计上保证考虑周全,后期增加接口,需要修改所有工厂类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值