java设计模式(六):简单工厂模式

需求

常规思维:

这里的订单类和披萨类高度耦合。

这样写违背了OCP原则(修改关闭,扩展开放),多个订单类的情况下,如果新增披萨就要修改每个订单类的代码,耦合性很高。

简单工厂模式实现

当需要大量创建对象的时候可以使用简单工厂模式

这里加了一个简单工厂类,他可以返回任何类型的披萨,当加入新的披萨时,只需要修改简单工厂类的代码,不需要修改各种订单调用类

代码分析如下

代码如下

Pizza类:

package simplefactory;

public abstract class Pizza {



    public abstract void prepare();


    void bake(){
        System.out.println("烘烤");
    }

    void cut(){
        System.out.println("切");
    }

    void box(){
        System.out.println("打包");
    }

}

CheessPizza类:

package simplefactory;

public class CheessPizza extends Pizza{
    @Override
    public void prepare() {
        System.out.println("加入奶酪");
    }
}

GreekPizza类:

package simplefactory;

public class GreekPizza extends Pizza {
    @Override
    public void prepare() {
        System.out.println("加入希腊酸奶");
    }
}
SimpleFactory类
package simplefactory;

public class SimpleFactory {
   public Pizza getPizza(String pizzaType){
       if (pizzaType.equals("Cheess")){
           return new CheessPizza();
       }
       if (pizzaType.equals("Greek")){
           return  new GreekPizza();
       }
       return null;
   }
}
OrderPizza类
package simplefactory;

public class OrderPizza {
    public OrderPizza(SimpleFactory simpleFactory,String pizzaType){

        simpleFactory.getPizza(pizzaType).prepare();
        simpleFactory.getPizza(pizzaType).bake();
        simpleFactory.getPizza(pizzaType).cut();



    }
}
Client类
package simplefactory;

public class Client {
    public static void main(String[] args) {
        new OrderPizza(new SimpleFactory(),"Greek");
        new OrderPizza(new SimpleFactory(),"Cheess");
    }
}

猜你喜欢

转载自blog.csdn.net/qq_39046786/article/details/113573662