工厂模式(三)

抽象工厂模式是工厂方法模式的升级版本,它引入了产品族的概念:一系列相关或相互依赖的对象组成的集合。
比如魔兽争霸中的种族(人族,兽族,暗夜精灵族,不死族)
由于通用类图与角色和工厂方法模式相同,这里就省略了,直接看代码:

抽象产品和具体产品给出实现:

1 //骑兵接口
2 public interface Cavalry{
3 }
4 //人族骑士
5 public class knight implements Cavalry{
6 }
7 //兽族狼骑士
8 public class Wolfrider implements Cavalry{
9 }
1 //步兵接口
2 public interface Infantry{
3 }
4 //人族步兵
5 public class Footman implements Infantry{
6 }
7 //兽族步兵大G
8 public class Grunt implements Infantry{
9 }

抽象工厂角色:

1 //兵营接口
2 public interface Barracks{
3     //生产骑兵
4     public Cavalry createCavalry();
5     //生产步兵
6     public Infantry createInfantry();
7 }

具体工厂角色:

 1 //兽族兵营
 2 public class OrcBarracks implements Barracks{
 3     @Override
 4     public Cavalry createCavalry() {
 5         return new Wolfrider();//生产狼骑士
 6     }
 7     @Override
 8     public Infantry createInfantry() {
 9         return new Grunt();//生产大G
10     }    
11 }
//人族兵营
public class HumanBarracks implements Barracks{
    @Override
    public Cavalry createCavalry() {
        return new knight();//人族骑士
    }
    @Override
    public Infantry createInfantry() {
        return new Footman();//人族步兵
    }    
}

这里的兽族兵营和人族兵营就相当于不同的两个产品族,可以看出这种模式的本质就是由具体工厂角色选择性的实现产品族。

转载于:https://www.cnblogs.com/ergou/p/6919649.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值