java设计模式学习笔记--简单工厂模式

1. 什么是简单工厂模式

简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。但是严格来说,简单工厂模式不是设计模式,它更像是一种编程习惯。

2. 简单工厂模式的结构

这里写图片描述
(请允许我无耻的偷了百度百科的图)

从上面的类图可以看出,简单工厂模式一共有三种类:
1、抽象产品接口IProduct。
2、具体的产品类Product。
3、工厂类Creator。

3、示例代码

简单工厂模式很简单,下面直接上示例代码。

抽象产品接口:

//披萨接口
public interface Pizza {
    //切片
    void cut();
    //装盒
    void box();
}


具体的产品类:

//这是一个芝士披萨
public class CheesePizza implements Pizza{
    @Override
    public void cut() {
        System.out.println("CheesePizza:cut");
    }

    @Override
    public void box() {
        System.out.println("CheesePizza:box");
    }
}


//蛤蜊披萨
public class ClamPizza implements Pizza {
    @Override
    public void cut() {
        System.out.println("ClamPizza:cut");
    }

    @Override
    public void box() {
        System.out.println("ClamPizza:box");
    }
}


工厂类Creator:

public class SimplePizzaFactory {

    public static Pizza factory(String type){
        Pizza pizza = null;
        if (type == null) {
            return pizza;
        }else if (type.equals("cheese")){
            return new CheesePizza();
        }else if (type.equals("clam")){
            return new ClamPizza();
        }else {
            return pizza;
        }
    }
}


测试类:

public class Client {

    public static void main(String[] args){
        Pizza cheese = SimplePizzaFactory.factory("cheese");
        Pizza clam = SimplePizzaFactory.factory("clam");

        cheese.box();
        clam.cut();
    }

}

输出:
这里写图片描述

4、优缺点

到此,简单工厂模式就结束了,是不是很简单哪。那么如此简单的模式到底有什么用哪?

优点:简单工厂模式将创建的代码封装成一个,当以后改变只需要修改这个类就行了。在客户类中,我们删除了具体的实例化过程,这就是解耦啊。

缺点:试想一下这种情况,如果我现在有10个具体的披萨类,那是不是要在工程类里面写10个else if哪,简单工厂模式把所有的处理逻辑都放在了这个工厂类中,使得这个类承担了过大的责任,如果哪天挂了,那么对整个系统都会有很大的影响。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值