简单工厂的设计模式

简介

简单工厂模式(Simple Factory Pattern)属于类的创新型模式,由于工厂类的方法大多数是静态的,又叫静态工厂方法模式(Static FactoryMethod Pattern),它通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

代码实现

1 首先创建一个接口 (car) 有一个 跑的功能
package com.guxiang.factory.simplefactory;

public interface Car {
    void run();
}
2 宝马和奔驰两辆豪车分别实现了这个car接口
public class BWM implements Car{

    public void run() {
        System.out.println("宝马在路上飞奔");
    }

}
public class Benz implements Car {

    public void run() {
        System.out.println("奔驰在路上飞奔");
    }

}
如果是不使用工厂设计模式,那么代码很简单
public class NoFactory {
    public static void main(String[] args) {
        Car c1 = new Benz();
        Car c2 = new BWM();

        c1.run();
        c2.run();
    }
}
相应的uml类图如下

不使用简单工厂设计模式的情况

如图,我们可以看见 它虽然代码相对简洁 但是却与3个类发生了关系 如果产品种类加多 那么就会与更多类发生关系 ,违法了 迪米特法则


下面介绍使用简单工厂设计模式的方法

简单工厂有两种方式实现

第一种
public class CarFactory {

    public static Car createCar( String type) {
        if ("宝马".equals(type)) {
            return new BWM();
        }else if ("奔驰".equals(type)) {
            return new Benz();
        }else {
            return null;
        }
    }
}

第二种

public class CarFactory2 {
    public static Car createBenz() {
        return new Benz();
    }

    public static Car createBWM() {
        return new BWM();
    }
}

第一种的调用方式如下

public class HaveFactory {
    public static void main(String[] args) {
        Car car1 = CarFactory.createCar("奔驰");
        Car car2 = CarFactory.createCar("宝马");

        car1.run();
        car2.run();
    }
}

第二种的调用方式如下

public class HaveFactory {
    public static void main(String[] args) {
        Car car1 = CarFactory2.createBenz();
        Car car2 = CarFactory2.createBWM();

        car1.run();
        car2.run();
    }
}

他们的UML类图实现如下
这里写图片描述

可以发现,使用简单工厂,那么无论生产多少种类的汽车 我们都仅仅只需要和两个类发生关系。这样更难体现面向对象的好处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值