工厂方法模式和简单工厂方法模式

本文介绍了Java中的工厂模式如何通过解耦机制创建对象,以简单工厂和工厂方法为例,展示了如何根据条件动态创建Color类的不同实例,并探讨了其在MyBatis中的实际运用。

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

概念
在Java设计模式中使用工厂的概念,那就是生成对象的地方了。
作用
解耦,调用方和具体的目标类进行了解耦,调用方根本就不知道需要创建那个对象,它只是提出了条件,然后工厂就可以根据给定的条件来决定创建哪一个对象。

简单工厂方法模式

  • 简单工厂方法模式并不是23种设计模式中的内容
  • 简单工厂方法模式概念:所谓简单工厂方法模式,就是为目标类创建一个工厂,当有多个目标实现的时候,在这个工厂内部进行逻辑判断来根据条件创建不同的目标实例。
public interface Color {

    String getColor();
}
public class Green implements Color {
    public String getColor() {
        return "绿色";
    }
}

public class Red implements Color {
    public String getColor() {
        return "红色";
    }
}
public enum  ColorEnum {
    RED,GREEN;
}
public class SimpleColorFactory {
    public  Color getColor(ColorEnum colorEnum) {
        switch (colorEnum) {
            case RED:
                return new Red();
            case GREEN:
                return new Green();
            default:
                return null;
        }

    }
}

public class SimpleColorFactoryMain {
    public static void main(String[] args) {
        SimpleColorFactory simpleColorFactory = new SimpleColorFactory();
        Color color = simpleColorFactory.getColor(ColorEnum.GREEN);
        System.out.println( color.getColor());
    }
}

工厂方法模式

public interface Color {

    String getColor();
}
public class Green implements Color {
    public String getColor() {
        return "绿色";
    }
}

public class Red implements Color {
    public String getColor() {
        return "红色";
    }
}
public enum  ColorEnum {
    RED,GREEN;
}
public interface FactoryMethod {
    public Color getColor() ;
}
public class GreenFactoryMethod implements FactoryMethod {

    public Color getColor() {
        return new Green();
    }
}
public class ReadFactoryMethod implements FactoryMethod {

    public Color getColor() {
        return new Red();
    }
}

public class FactoryMethodMain {
    public static void main(String[] args) {
        FactoryMethod factory = new GreenFactoryMethod();
        Color color = factory.getColor();
        System.out.println(color.getColor());

    }
}
  • 工厂方法模式的重点就在这个工厂接口了
  • 目标可以无限扩展,工厂类也要随之扩展,一对一存在,满足了开闭原则,但如果目标实现较多,工厂实现类也会增多,不简洁。
  • MyBatis中使用的比较多,事务模块和数据源模块都使用了工厂方法模式。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值