设计模式(二)工厂方法 / 实例工厂
程序员文章站
2024-01-05 11:23:58
...
抽象产品类:
public abstract class BMW {
}
具体产品类:
public class BMW320 extends BMW{
public BMW320() {
System.out.println("制造-->BMW320");
}
}
public class BMW523 extends BMW {
public BMW523() {
System.out.println("制造-->BMW523");
}
}
抽象工厂类:
public interface Factory {
public BMW createBMW() ;
}
具体工厂类:
public class BMW320Factory implements Factory{
@Override
public BMW createBMW() {
return new BMW320();
}
}
public class BMW523Factory implements Factory{
@Override
public BMW createBMW() {
return new BMW523();
}
}
消费者:
public class Customer {
public static void main(String[] args) {
BMW bmw320 = new BMW320Factory().createBMW();
BMW bmw523 = new BMW523Factory().createBMW();
System.out.println(bmw320);
System.out.println(bmw523);
}
}
此场景的成员:
1) 抽象产品类:抽象类或者接口。
2) 具体产品类:工厂要创建的具体产品。
3) 抽象工厂类:定义工厂方法。
4) 抽象工厂类:实现工厂方法,创建具体产品。
从开闭原则来分析工厂模式。当消费者想要一种新型车,需要扩展产品类,并扩展工厂类,都符合开闭原则的。