这里就不介绍静态工厂模式了,因为他的扩展性比较差,实际使用比较少
直接上代码,主要包括两个抽象类,Factory和Product,客户端直接调具体的factory类
abstract class Factory {
public abstract Product manufacture();
}
public abstract class Product {
public abstract void show();
}
接着是实现抽象类的具体类
工厂
public class FactoryA extends Factory{
@Override
public Product manufacture() {
return new ProductA();
}
}
public class FactoryB extends Factory{
@Override
public Product manufacture() {
return new ProductB();
}
}
public class FactoryC extends Factory{
@Override
public Product manufacture() {
return new ProductC();
}
}
产品
public class ProductA extends Product{
@Override
public void show() {
System.out.println("生产出产品A");
}
}
public class ProductB extends Product{
@Override
public void show() {
System.out.println("生产出产品B");
}
}
public class ProductC extends Product{
@Override
public void show() {
System.out.println("生产出产品C");
}
}
客户端
public class SimpleFactoryPattern {
public static void main(String[] args) {
FactoryA aFactory = new FactoryA();
FactoryB bFactory = new FactoryB();
FactoryC cFactory = new FactoryC();
// 客户要产品A
try {
// 调用工厂类的静态方法 & 传入不同参数从而创建产品实例
aFactory.manufacture().show();
} catch (NullPointerException e) {
System.out.println("没有这一类产品");
}
// 客户要产品B
try {
bFactory.manufacture().show();
} catch (NullPointerException e) {
System.out.println("没有这一类产品");
}
// 客户要产品C
try {
cFactory.manufacture().show();
} catch (NullPointerException e) {
System.out.println("没有这一类产品");
}
}
}