工厂设计模式之——简单工厂设计模式

工厂设计模式分为三类:简单工厂设计模式,工厂方法设计模式,抽象工厂设计模式
工厂设计模式的核心本质:
实例化对象,用工厂方法代替new操作;
将选择的实例化类和创建者进行统一地管理,实现调用者和实现类的解耦操作
也就是说实现分工合作,依赖从具体到抽象,不依赖于具体实现,便于扩展

今天先介绍简单工厂设计模式
简单工厂设计模式是比较常用的工厂设计模式
要求:消费者需要得到两类车:奥迪和比亚迪,用代码实现
(1) 首先说明在没有工厂设计模式的情况下的思路
Car接口
Car.java

public interface Car{
    void run();
}

比亚迪类实现Car接口
Byd.java

public class Byd implements Car {

    @Override
    public void run() {
        System.out.println( "byd run" );
    }
}

奥迪类实现Car接口
Audi.java

public class Audi  implements Car{

    @Override
    public void run() {
        System.out.println( "audi run" );

    }
}

调用者,也是消费者,生产比亚迪和奥迪汽车
Client02.java

public class Client02 {
    public static void main(String[] args){
        Car c1 = new Audi();
        Car c2 = new Byd();

        c1.run();
        c2.run();
    }

}

在上述这种情况下,对于Client02,也即调用者来说,需要比亚迪和奥迪的生产,也就是说,调用者依赖Car接口、Byd类、Audi类,太依赖具体的实现类,不能实现有效的分工,相关的类图关系如图所示:
在这里插入图片描述
(2) 使用简单工厂设计模式实现
CarFactory.java

public class CarFactory {
//    public static Car createCarFactory(String type){
//        if ("audi".equals( type )){
//            return new Audi();
//        }
//        if ("byd".equals( type )){
//            return new Byd();
//        }
//        return null;
//    }

    public static Car createAudi(){
        return new Audi();
    }
    public static Car createByd(){
        return new Byd();
    }
}

只需将上面的Client02.java文件换成如下的Client01.java文件
Client01.java

public class Client01 {
    public static void main(String[] args){
        Car c1 = CarFactory.createAudi();
        Car c2 = CarFactory.createByd();

        c1.run();
        c2.run();
    }
}

在简单工厂设计模式中,在增加了CarFactory类之后,CarFactory只负责创建audi和byd,而调用者只需要调用CarFactory就好,实现了更明确的分工,其类关系如下所示:
在这里插入图片描述
虽然整体关系比(1)中复杂,但是调用者的工作简单了,而且更具有扩展性。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值