优点:减低了代码的耦合度,良好的封装性,代码结构清晰。扩展性好。
缺点:添加新的产品时就要编写一个新的产品类,同时还要引入抽象层,增加代码量结构复杂化。
1、创建产品类
public abstract class Product {
/**
* 产品类的抽象方法
* 由具体的产品类去实现
* */
public abstract void method();
}
2、创建具体产品类
public class ConcreteProductA extends Product {
@Override
public void method() {
System.out.println("产品A");
}
}
public class ConcreteProductB extends Product {
@Override
public void method() {
System.out.println("产品B");
}
}
3、具体实现工厂
public class ConcreteFactoryA extends Factory {
/**
* 具体工厂类
* */
@Override
public Product createProduct() {
return new ConcreteProductA();
}
}
public class ConcreteFactoryB extends Factory {
/**
* 具体工厂类
* */
@Override
public Product createProduct() {
return new ConcreteProductB();
}
}
4、创建需要的产品
Factory factoryA = new ConcreteFactoryA();
Product productB = factoryA .createProduct();
productB .method();
Factory factoryB = new ConcreteFactoryB();
Product productB = factoryB .createProduct();
productB .method();