简单工厂模式

简单工厂模式

摘要:

​ 简单工厂模式由一个工厂对象决定创建出哪一种产品类的实例,简单工厂模式是工厂模式家族中最简单使用的模式。

为什么要用工厂模式?

​ 假如,现在我们需要一个手机类和电脑类,它们都属于产品,我们就这么写。

产品类接口

public interface Product {
    //产品开始工作
    public void  work();
}

电脑实例:

public class Computer implements Product {
    public void work() {
        System.out.println("电脑开始工作");
    }
}

手机实例:

public class Phone implements Product {
    public void work() {
        System.out.println("手机:开始工作");
    }
}

开始代码

public class TestFactory {
    public static void main(String[] args) {
        Product phone = new Phone();
        //手机开始工作
        phone.work();

        Product computer = new Computer();
        //手机开始工作
        computer.work();
    }
}

输出结果为:

手机:开始工作
电脑开始工作

​ 没有用工厂模式写,这样的代码有没有什么毛病呢?没有什么毛病,能跑就行对吧。但是,我们的测试类 TestFactory 是使用的一方,而 Phone 和 Computer 是被使用的一方,使用类中直接使用了Phone 和 Computer ,如果 Phone实例 或者 Computer实例 发生变化或者类没有被加载呢?那么我们的 TestFactory 使用类是会报错的。耦合性太强,不解耦。

使用则和被使用者两者之间,耦合,产生了依赖,当被使用者改变时,会影响被使用者

使用工厂模式

​ 使用工厂模式来降低两者之间的依赖,实现解耦。我们来创建一个产品工厂类(ProductFactory),代码如下:

//产品工厂类
public class ProductFactory {
    public static Product getProduct(String name){
        if ("phone".equals(name)){
            return new Phone();
        }else if ("computer".equals(name)){
            return new Computer();
        }
        return null;
    }
}

我们根据传入的参数,对参数进行判断,返回不同的产品类

我们使用这代码修改只会,可以实现解耦,代码如下:

public class TestFactory {
    public static void main(String[] args) {
        Product phone = ProductFactory.getProduct("phone");
        if (phone != null){
            //手机开始工作
            phone.work();
        }

    }
}

这样使用者和被使用者之间实现了解耦,使用者和被使用之前没有直接依赖关系,如果手机产品发生了变化,或者不存在,那么我们的work方法也就不会执行。

相关代码及文档:https://github.com/q779247257/java-Study

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值