工厂模式(三)

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

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

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();//人族步兵
    }    
}

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

posted @ 2017-05-30 08:25  夏虫语冰、  阅读(133)  评论(0编辑  收藏  举报