设计模式(五)——抽象工厂

一、举一个手机的例子

生产品:手机

生产两个品牌:苹果手机和安卓手机

每个品牌生产两种:高端机和低端机

分析:苹果手机和安卓手机的共性就是,都有高端机和低端机,那么干脆就建一个工厂(PhoneFactory)准备两条生产线,一个生产高端机(createHigh方法),另一个生产低端机(createLow方法);如果苹果有订单,那么工厂就改为苹果工厂(AndroidFactory ),生产苹果手机,同理安卓有订单,工厂就改为安卓工厂(AndroidFactory ),生产android手机即可。

 

二、代码实例

//手机工厂接口

public interface PhoneFactory{
    public HighPhone createHigh();
    public LowPhone createLow();
}

//高端机接口

public interface HighPhone{
     public void show();
}

//低端机接口

public interface LowPhone{
     public void show();
}

//安卓高端机类

public class AndroidHigh implements HighPhone{
     public void show(){
         System.out.printf("andoridHigh");
     }
}

//安卓低端机类

public class AndroidLow implements LowPhone{
     public void show(){
         System.out.printf("andoridLow");
     }
}

//苹果高端机类

public class AppleHigh implements HighPhone{
     public void show(){
         System.out.printf("andoridHigh");
     }
}

//安卓低端机类

public class AppleLow implements LowPhone{
     public void show(){
         System.out.printf("andoridLow");
     }
}

//安卓工厂类

public class AndroidFactory implements PhoneFactory{
    public HighPhone createHigh(){
        return new AndroidHigh();
    };
    public LowPhone createLow(){
        return new LowHigh();
    };

//苹果工厂类

public class AppleFactory implements PhoneFactory{
    public HighPhone createHigh(){
        return new AppleHigh();
    };
    public LowPhone createLow(){
        return new AppleLow();
    };

三、优点和缺点

优点:细节实现和上层抽象分离

缺点:产生很多类或接口

四、提示

以上描述的手机的场景,如果用图来表示手机、品牌、配置之间的关系,就绘出一张图,这张图的特点是,手机就是根 结点,而配置是最终叶子结点;结合这张图,然后在对照一下代码,你就会发现适用抽象工厂模式场景的蛛丝马迹。

 

 

 

转载于:https://my.oschina.net/kun123/blog/725401

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值