简单工厂模式

概述

  1. 定义:定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。
  2. 在简单工厂模式中用于创建实例的方法通常是静态的方法,简单工厂模式又被称为静态工厂模式

实例

  • 使用简单工厂模式,使得可以生产不同的pizza,如cheesePizza,GreekPizza等不同的Pizza,每一个Pizza都需要进行准备材料,做,切,打包等工作。
  • 创建一个简单工厂,工厂的逻辑就是根据需要的类型返回对应的Pizza实例。
  • 创建获取Pizza的对象,该对象通过工厂获取Pizza实例。

创建一个Pizza抽象类

//将pizza作为抽象类
public abstract class Pizza {
    protected  String name;//具体的名字
    public abstract void prepare();//准备原材料,不同的pizza是不一样的,这里可以继承

    public void bake(){
        System.out.println(name + "baking");
    }
    public void cut(){
        System.out.println(name + "cutting");
    }
    public void box(){
        System.out.println(name + "boxing");
    }
    public void setName(String name) {
        this.name = name;
    }
}

各类Pizza继承Pizza

public class GreekPizza extends Pizza {
    @Override
    public void prepare() {
        System.out.println("准备greekpizza的材料");
    }
}
public class CheesePizza extends Pizza{
    @Override
    public void prepare() {
        System.out.println("准备cheesepizza的材料");
    }
}

编写工厂,主要是根据需要返回对应的Pizza实例

public class SimpleFactory {
    public static Pizza createPizza(String orderType){
        System.out.println("使用简单工厂模式");
        Pizza pizza = null;
        if(orderType.equals("greek")){
            pizza =  new GreekPizza();
            pizza.setName("希腊披萨");
        }else if (orderType.equals("cheese")){
            pizza = new CheesePizza();
            pizza.setName("奶酪披萨");
        }
        return pizza;
    }
}

获取Pizza对象的订单,通过工厂获取

public class OrderPizza {
    String orderType = "";//用户输入的对象
    Pizza pizza = null;
    public OrderPizza() {
        //this.simpleFactory = simpleFactory;//设置简单的工厂对象
        do{
            orderType =getType();
            pizza = SimpleFactory.createPizza(orderType);
            //输出pizza
            if (pizza != null) {
                pizza.prepare();
                pizza.bake();
                pizza.cut();
                pizza.box();
            }else{
                System.out.println("订购pizza失败");
                break;
            }
        }while(true);
    }
//获取Pizza类型
    private String getType(){
        Scanner scan = new Scanner(System.in);
        String type = scan.next();
        return type;
    }
}

总结:

  • 简单工厂模式属于创建型模型,是工厂模式的一种。简单工厂模式是由一个工厂对象决定创建出哪一种类的产品类的实例
  • 简单工厂模式就是定义一个创建对象的类(工厂类),由这个类来封装实例化对象的行为
  • 使用场景:当用到大量的创建某种、某类或者某批对象的时候,就会使用工厂模式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值