概念:抽象工厂模式是工厂方法模式的升级版本,在有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。
适用于多个细分的部分组成的一个产品的制造工厂。
例子:一个世界级的足球俱乐部,需要伟大的球衣,雄厚的资金,优质的球场草皮
抽象一个足球队的工厂接口,FootBallTeamFactory,里面3个方法接口Player,Money,Place
public interface FootBallTeamFactory {
Player createPlayer();
Money createMoney();
Place createPlace();
}
public interface Player {
public void play();
}
public interface Money {
public void pay();
}
public interface Place {
public void haveLand();
}
伟大俱乐部工厂GreatFootBallTeam实现FootBallTeamFactory,并且实现其方法,返回其方法的实现类GoodPlayer,MoreMoney,GoodPlayer
public class GreatFootBallTeam implements FootBallTeamFactory{
@Override
public GoodPlayer createPlayer() {
return new GoodPlayer();
}
@Override
public MoreMoney createMoney() {
return new MoreMoney();
}
@Override
public BroadPlace createPlace() {
return new BroadPlace();
}
}
public class GoodPlayer implements Player {
@Override
public void play() {
System.out.println("世界级表现");
}
}
public class MoreMoney implements Money {
@Override
public void pay() {
System.out.println("资金雄厚");
}
}
public class BroadPlace implements Place{
@Override
public void haveLand() {
System.out.println("良好的草皮");
}
}
测试方法如下:
public class ClientTest {
public static void main(String[] args) {
FootBallTeamFactory factory = new GreatFootBallTeam();
Player player = factory.createPlayer();
Money money = factory.createMoney();
Place place = factory.createPlace();
player.play();
money.pay();
place.haveLand();
}
}
控制台输出结果为:
世界级表现
资金雄厚
良好的草皮