设计模式篇之工厂模式

本文介绍了简单工厂模式和工厂方法模式在软件设计中的应用。简单工厂模式通过静态方法创建对象,适用于类的扩展性要求不高的场景,但存在不易扩展的缺点。工厂方法模式则为每种产品创建单独的工厂,提高了代码的灵活性,但可能导致更多的类产生。这两种模式都是面向对象设计模式中的重要概念,用于解耦对象的创建与使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单工厂模式

简单工厂模式又叫静态方法模式(因为工厂类定义了一个静态方法)
现实生活中,工厂是负责生产产品的;同样在设计模式中,简单工厂模式我们可以理解为负责生产对象的一个类,称为“工厂类”。

package 工厂模式.简单工厂模式;

public interface Car {

    //获取汽车名称
    void name();
}

=======================================================================================
package 工厂模式.简单工厂模式;

//创建工厂
public class CarFactory {

    /**
     * 获取汽车
     * @param name 需要汽车名称
     * @return
     *
     * 缺点:不好扩展,如果有新的汽车过来需要修改代码
     */
    public static Car getCar(String name){
        if("五菱".equals(name)) {
            return new Wuling();
        } else if ("特斯拉".equals(name)) {
            return new Tesila();
        } else {
            return null;
        }
    }
}
=======================================================================================
package 工厂模式.简单工厂模式;

public class Tesila implements Car {

    //定义特斯拉
    public void name() {
        System.out.println("特斯拉!");
    }
}

=======================================================================================
package 工厂模式.简单工厂模式;

public class Wuling implements Car {
    //定义五菱神车
    public void name() {
        System.out.println("五菱神车!");
    }
}

=======================================================================================
package 工厂模式.简单工厂模式;

public class Test {

    public static void main(String[] args) {
        //按照以前的思路 我们的操作如下
        Car car1 = new Wuling(); //获取五菱神车
        Car car2 = new Tesila(); //获取到特斯拉汽车
        car1.name();
        car2.name();

        // 使用工厂以后,首先我们需要先创建工厂,然后输入你需要的车

        // 说白了 工厂模式 就是你在调用new对象的时候,中间加入了一个中间的
        // 组件,我们只需要通过中间的组件直接获取相关的内容就可以了
        // 就像我们买汽车的时候,我们不需要和生产汽车的厂家买车 我们直接和汽车销售商进行购买
        Car car3 = CarFactory.getCar("五菱");
        Car car4 = CarFactory.getCar("特斯拉");
        car3.name();
        car4.name();

    }
}

工厂方法模式

package 工厂模式.工厂方法模式;

public interface Car {

    void name();
}

=======================================================================================
package 工厂模式.工厂方法模式;

public interface CarFactory {
    //定义Car工厂
    Car getCar();
}
=======================================================================================
package 工厂模式.工厂方法模式;

public class tesila implements Car {
    //定义汽车名称
    public void name() {
        System.out.println("特斯拉");
    }
}
=======================================================================================
package 工厂模式.工厂方法模式;

public class tesilafactory implements CarFactory {
    //定义特斯拉工厂
    public Car getCar() {
        return new tesila();
    }
}

=======================================================================================
package 工厂模式.工厂方法模式;

public class wuling implements Car {

    //定义汽车名称
    public void name() {
        System.out.println("五菱神车!");
    }
}

=======================================================================================
package 工厂模式.工厂方法模式;

public class wulingFactory implements CarFactory {
    //定义五菱工厂
    public Car getCar() {
        return new wuling();
    }
}

=======================================================================================
package 工厂模式.工厂方法模式;

public class TestCar {

    public static void main(String[] args) {
        //工厂方法模式,就是给每一个需要获取的东西创建一个工厂
        //就像生产汽车一样,每个品牌都有一个自己的工厂
        //这种实现起来,代码会很多,不实用,一般开发中用的都是简单工厂模式
        Car car = new wulingFactory().getCar();
        car.name();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值