1.简单工厂模式:模式很简单,使用在业务较简单的情况。由三种角色构成,分别是工厂类角色,抽象产品角色以及具体产品角色。其中工厂类是核心,包含一定的逻辑判断,而抽象产品角色是由一个抽象类或接口实现,而具体产品则是对抽象产品的实现。 下面写了一个程序实现简单工厂模式:其中抽象产品角色为一个接口Industry.java(行业),具体产品角色为两个ITIndustry.java(IT行业)和FinanceIndustry.java(金融行业),工厂类为IndustryFactory.java,最后是一个测试类SimpleFactoryTest.java。Industry.java:
ITIndustry.java:
FinanceIndustry.java:
IndustryFactory.java:
SimpleFactoryTest.java:
2.工厂方法模式:简单工厂模式的弊端在于每增加一个行业,都需要在工厂类中增加相应的逻辑,所以需要引入工厂方法模式。工厂方法模式与简单工厂模式不同的是将原有的工厂类划分为抽象工厂和具体工厂。其中抽象工厂提供了一个接口,具体工厂负责实现对应的具体的产品。 下面写了一个程序实现抽象方法模式:其中抽象工厂为IndustryFactoryInterface.java,包括两个具体工厂ITIndustryFactory.java和FinanceIndusryFactory.java,具体的产品还是ITIndustry.java和FinanceIndustry.java。另外还有一个测试类FactoryMethodTest.java。
IndustryFactoryInterface.java:
ITIndustryFactory.java:
FinanceIndustry.java:
具体的产品类同上简单工厂模式。FactoryMethodTest.java:
3.抽象工厂模式:抽象工厂模式是一种比工厂模式抽象程度更高的模式。在工厂方法模式中,一个具体的工厂类负责创建一个单独的产品,如果有两个不同的产品要创建,就需要两个不同的工厂类,即使这两个产品有某些必要联系,同样还是需要两个不同的工厂类。 所以说工厂方法模式是针对于一个产品系列的,而抽象工厂模式是针对多个产品系列的。即工厂方法模式是一个产品一个工厂类,而抽象工厂模式是多个产品系列一个工厂类。 下面写了一个程序实现抽象工厂模式:其中包括抽象工厂AbstractFactory.java,负责创建行业和公司。还包括两个具体工厂FactoryA.java和FactoryB.java。另外为了配合使用抽象工厂模式,又创建了一个接口Company.java,并有两个具体的MicosoftCompany.java和GoldmanCompany.java。最后还有一个测试类AbstractFactory.java。AbstractFactory.java
FactoryA.java:
Company.java:
MicosoftCompany.java:
GoldmanCompany.java:
AbstractFactoryTest.java:
ITIndustry.java和FinaceIndustry.java同上面。