Java 工厂设计模式

Java 工厂设计模式,第1张

Java 工厂设计模式 简介

工厂设计模式在java中有大量的应用,如spring框架,这种类型的设计模式属于创建型模式。在工厂设计模式中,创建逻辑不会对客户端暴露,可以通过一个对外接口创建所需对象

工厂模式使用场景

需要频繁创建对象且这些对象多处使用,业务发生改变需要修改多处代码,使用工厂模式即可进行代码解耦,业务改变修改时只需修改工厂部分代码

简单工厂模式

1.抽象一个对象,定义共性内容 

public interface IMarket {
    
    void goods();

    
}

2.创建具体实现类,实现自己特有内容

public class JdMarket implements IMarket {

    
    @Override
    public void goods() {
        System.out.println("这是京东的商品");
    }
}


public class PddMarket implements IMarket {


    
    @Override
    public void goods() {
        System.out.println("这是拼多多的商品");
    }
}


public class TbMarket implements IMarket {

    
    @Override
    public void goods() {
        System.out.println("这是淘宝的商品");
    }
}

3.创建工厂,定义通过类型获取对应产品对象的方法

public class SimpleFactory {

    
    public static IMarket getMarket(String type) {
        switch (type) {
            case "JD":
                return new JdMarket();
            case "TB":
                return new TbMarket();
            case "PDD":
                return new PddMarket();
            default:
                return null;
        }
    }
}
测试结果 
public class SimpleFactoryTestMain {
    public static void main(String[] args) {
        // 此处传入京东,获取京东商场
        IMarket market = SimpleFactory.getMarket("JD");
        market.goods();
    }
}

 总结:

简单工厂就是将对象抽象,定义共性内容,创建具体实现类。然后创建一个工厂,通过传入不同类型,创建对应对象。在一定程度上解耦代码。未来产品发生变化时,一定程度上减少修改工作量。但是在新增对象时需要修改工厂内部逻辑,对象过多时增加了系统逻辑复杂度,不利于未来的扩展和维护。

工厂方法模式

对简单工厂模式进一步抽象定义,使得可以在不修改工厂逻辑的情况下,可以拓展添加新的对象。

抽象工厂类,创建工厂接口,抽象定义获取对象的接口。

public interface IMarketFactory {
    
    IMarket getMarket();
}

定义具体工厂类,实现抽象工厂接口,实现获取对象的方法,由具体的工厂创建对应的对象 

public class JdMarketFactory implements IMarketFactory {

    
    @Override
    public IMarket getMarket() {
        return new JdMarket();
    }
}


public class PddMarketFactory implements IMarketFactory {

    
    @Override
    public IMarket getMarket() {
        return new PddMarket();
    }
}


public class TbMarketFactory implements IMarketFactory {

    
    @Override
    public IMarket getMarket() {
        return new TbMarket();
    }
}
测试结果
public class FactoryMethodTestMain {
    public static void main(String[] args) {
        // 获取京东商场对象
        JdMarketFactory jdMarketFactory = new JdMarketFactory();
        IMarket market = jdMarketFactory.getMarket();
        market.goods();
        // 获取淘宝商场对象
        TbMarketFactory tbMarketFactory = new TbMarketFactory();
        IMarket tbMarket = tbMarketFactory.getMarket();
        tbMarket.goods();
    }
}

 总结

工厂方法模式的优点是具备更高的复用性和可读性,可以在不需要修改工厂逻辑的情况下可以创建新的对象。缺点是需要创建很多的工厂,当类型很多的时候,需要创建的工厂类就很多。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5682251.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存