设计模式系列-简单工厂模式

本文介绍了简单工厂模式的概念及其应用场景。简单工厂模式通过一个工厂类来创建不同类型的对象,简化了客户端调用并保护了内部创建过程。文章还讨论了简单工厂模式的优势,包括方便客户端调用、集中管理和提高项目的可维护性。

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

工厂模式,首先看下Wikipedia的描述

Factory Pattern is "A factory is an object for creating other objects". Simple Factory Pattern is a Factory class in its simplest form (In comparison to Factory Method Pattern or Abstract Factory Pattern). In another way, we can say: In simple factory pattern, we have a factory class which has a method that returns different types of object based on given input.

简单翻译一下,工厂模式是“工厂是一个用于生成其他对象的对象”,简单工厂模式是一个最简单的工厂类(Factory)(与工厂方法模式,和抽象工厂模式相比)。换句话说在简单工厂模式中,我们有一个工厂类,里面有一个方法用于根据不同的输入返回不同类型的对象。直观的理解就是这样Factory.getObject(ObjectType),根据参数类型获取对应的对象。

这里我们主要讨论的问题是为什么需要使用简单工厂模式,而不是直接new一个实例就完了。这里有以下几个方面的考虑。

1、方便客户端调用,调用端可能不需要参与创建的过程。简洁明了,同时也起到了保护内部创建过程的作用。

2、集中管理这些需要创建的对象,这些对象可能有严格的生命周期控制,这样就可以做到集中管理这些生成的对象。

3、从可维护性的角度来说,如果调用者过多的介入了生成过程,那么当需要修改的时候,就会出现较多的地方需要维护,这样项目的可维护性就变差了,使用简单工厂模式就使得项目更加容易维护。如果具体的实现类变更了,外界不需要感知内部的变化。只需要内部变更即可。

public class Test {
    public static void main(String[] args){
        IShape shape = ShapeFactory.getShape(EnumShape.Circle);
        shape.shape();
    }
}
 
public class ShapeFactory {

    public static IShape getShape(EnumShape enumShape){
        IShape shape  = null;
        switch (enumShape){
            case Circle:
                shape = new CircleShape();
                break;
            case Trangle:
                shape = new TrangleShape();
                break;
        }
        return shape;
    }
}
/**
 * 图形接口
 */
public interface IShape {

    void shape();
}
 
public class CircleShape implements IShape{

    @Override
    public void shape() {
        System.out.println("it is CircleShape");
    }
}
public class TrangleShape implements  IShape{

    @Override
    public void shape() {
        System.out.println(" It is trangle");
    }
}

 
public enum EnumShape {
    Circle,Trangle
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值