工厂方法模式
**工厂方法模式:**定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
设计原则:
依赖倒置原则:要依赖抽象,不要依赖具体类。
下面的指导方针,能避免在OO设计原则中违反依赖倒置原则:
变量不可以持有具体的类的引用。
不要让类派生自具体类。
不要覆盖基类中已实现的方法。
package HeadFirstDesignMode.factory;
/**
* 描述:工厂方法模式
* Created by zjw on 2018-12-17 22:36
*/
public class FactoryMethodTest {
public static void main(String[] args) {
PizzaFactory nyPizzaFactory = new NYPizzaFactory();
nyPizzaFactory.createPizza().getPizzaName();
PizzaFactory chicagoPizzaFactory = new ChicagoPizzaFactory();
chicagoPizzaFactory.createPizza().getPizzaName();
}
interface IPizza{
void getPizzaName();
}
static class NYStylePizza implements IPizza{
@Override
public void getPizzaName() {
System.out.println("我是纽约风味比萨 " + this.getClass().getSimpleName());
}
}
static class ChicagoStylePizza implements IPizza {
@Override
public void getPizzaName() {
System.out.println("我是芝加哥风味比萨 " + this.getClass().getSimpleName());
}
}
//抽象工厂
static abstract class PizzaFactory {
abstract IPizza createPizza();
}
//具体工厂
static class NYPizzaFactory extends PizzaFactory {
@Override
IPizza createPizza() {
return new NYStylePizza();
}
}
//具体工厂
static class ChicagoPizzaFactory extends PizzaFactory {
@Override
IPizza createPizza() {
return new ChicagoStylePizza();
}
}
}
标签:PizzaFactory,模式,工厂,IPizza,static,createPizza,getPizzaName,方法,class
From: https://blog.51cto.com/u_11906056/6984948