设计模式-工厂模式

发布时间:2023年12月29日

工厂模式是常用的设计模式之一,属于创建型模式,它提供了一种创建对象的最佳方式。

工厂模式提供了一种将对象实例化过程封装在工厂类中的方式。通过使用工厂模式,可以将对象的创建与使用代码分离。

在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

一般可以将工厂模式分为三种,分别为 简单工厂、工厂方法和抽象工厂。

简单工厂模式

简单工厂不算是一个真正的设计模式,而更像是一种我们的编程习惯,但是在平时编码中这不失为一个简单的方法,可以将客户程序从具体类解耦。

工厂类拥有一个工厂方法(create),接受了一个参数,通过不同的参数实例化不同的产品类。以生产汽车为例,如图所示:
在这里插入图片描述
抽象产品:创建汽车接口。

具体产品:创建宝马汽车和奔驰汽车类,实现汽车接口。

工厂类:根据传入参数的不同,创建不同的具体产品,返回值为抽象产品接口。

/**
 * 抽象产品接口
 */
public interface ICar {
   
    void run();
}
 
 
/**
 * 具体产品类 实现抽象接口
 */
public class Benz implements ICar{
   
 
    @Override
    public void run() {
   
        System.out.println("Benz is running");
    }
}
 
 
/**
 * 具体产品类 实现抽象接口
 */
public class BMW implements ICar {
   
 
    @Override
    public void run() {
   
        System.out.println("BMW is running");
    }
}
 
/**
 * 简单工厂(静态工厂)
 *建立一个工厂类,对实现了同一接口的一些类进行实例的创建。
 *优点是比较好理解,简单易操作。
 *缺点是类的创建依赖工厂类,如果想要拓展程序,必须对工厂类进行修改,这违反了设计模式的开闭原则(OCP),即对扩展开放,对修改关闭。
 */
public class CarSimpleFactory {
   
 
    public static ICar create(String type){
   
        if(type.equals("BMW")){
   
            return  new BMW();
        } else if (type.equals("Benz")) {
   
            return new Benz();
        }
        return null;
    }
}
 
/**
 * 客户端调用测试
 */
public class Client {
   
    public 
文章来源:https://blog.csdn.net/quyingzhe0217/article/details/135288461
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。