抽象工厂模式:

概念: 提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,它是一种对象创建型模式。

在抽象工厂模式结构图中包含如下几个角色:

  • AbstractFactory(抽象工厂):它声明了一组用于创建一族产品的方法,每一个方法对应一种产品。
  • ConcreteFactory(具体工厂):它实现了在抽象工厂中声明的创建产品的方法,生成一组具体产品,这些产品构成了一个产品族,每一个产品都位于某个产品等级结构中。
  • AbstractProduct(抽象产品):它为每种产品声明接口,在抽象产品中声明了产品所具有的业务方法。
  • ConcreteProduct(具体产品):它定义具体工厂生产的具体产品对象,实现抽象产品接口中声明的业务方法。
/**
* 抽象工厂模式
*/

/**
* 工厂的接口
*/
interface HumanFactory{
MakeMoney getMakeMoney();
}

/**
* 赚钱的接口
*/
interface MakeMoney{
void doMakeMoney();
}

/**
* 分别实现男人和女人的接口实现
*/
class ManFactory implements HumanFactory{

@Override
public MakeMoney getMakeMoney() {
return new ManMakeMoney();
}
}

class WomanFactory implements HumanFactory{

@Override
public MakeMoney getMakeMoney() {
return new WomanMakeMoney();
}
}

/**
* 分别实现男人和女人的接口实现
*/
class ManMakeMoney implements MakeMoney{

@Override
public void doMakeMoney() {
System.out.println("男人赚钱!");
}
}

class WomanMakeMoney implements MakeMoney{

@Override
public void doMakeMoney() {
System.out.println("女人赚钱!");
}
}

public class Factory {

public static void main(String[] args) {
HumanFactory manMake = new ManFactory();
manMake.getMakeMoney().doMakeMoney();
HumanFactory womanMake = new WomanFactory();
womanMake.getMakeMoney().doMakeMoney();
}
}