菜单

风干咸鱼
风干咸鱼
发布于 2025-06-07 / 4 阅读
0
0

工厂设计模式

工厂设计模式包含:简单工厂、工厂方法、抽象工厂。本文只对工厂方法、抽象工厂做介绍

1、工厂方法设计模式

1.1、简单举例

使用简单工厂设计模式,会将所有的创建都写在create当中。既不满足开闭原则,如果对象创建的过程很复杂,也会使得该方法越来越复杂。这时就可以使用工厂方法设计模式来优化代码。

1.2、对工厂方法的简单理解

如果需要创建各种品牌的汽车。就可以为不同品牌的汽车抽象一个工厂创建对应品牌的汽车,再统一实现汽车工厂接口

工厂有自己的抽象和实现,工厂创建的产品(对象)也有自己的抽象和实现

1.3、代码案例

1、抽象一个工厂

// ResourceLoaderFactory则为:工厂有自己的抽象和实现
public interface ResourceLoaderFactory {
    // AbstractResource 则为:工厂创建的产品(对象)也有自己的抽象和实现
    AbstractResource createResource(String url);
}

2、创建不同对象的工厂实现该接口并单独创建

public class ClassPathResourceLoader implements ResourceLoaderFactory{
    @Override
    public AbstractResource createResource(String url) {
        return new ClassPathResource();
    }
}
public class HttpResourceLoader implements ResourceLoaderFactory{
    @Override
    public AbstractResource createResource(String url) {
        return new HttpResource();
    }
}

3、调用工厂创建实体类

public class ResourceFactory {
    // 将工厂缓存起来
    private static Map<String, ResourceLoaderFactory> factoryCache = new HashMap();

    static {
        factoryCache.put("www.baidu.com", new HttpResourceLoader());
        factoryCache.put("www.taobao.com", new ClassPathResourceLoader());
    }

    public static void main(String[] args) {
        AbstractResource abstractResource = create("www.taobao.com");
        System.out.println(abstractResource.getClass().getName());
    }

    public static Resource create(String url) {
        return factoryCache.get(url).createResource(url);
    }
}

2、抽象工厂方法设计模式


评论