设计模式-简单工厂模式

Posted zhou-920644981

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式-简单工厂模式相关的知识,希望对你有一定的参考价值。

返回上一级目录:Java设计模式

简单工厂模式,又叫静态工厂模式,是最简单的一种模式,只有3种角色:抽象产品接口,具体产品,工厂角色。

抽象产品接口,就是定义产品的行为

/**
 * @Author zhouw
 * @Description 就是一个球
 * @Date 2020-01-17
 */
public interface IBall {

    void say();
}

 

具体产品,具体产品的实现,也就是我们最终要得到的对象,当然不止一个

/**
 * @Author zhouw
 * @Description 篮球的具体实现
 * @Date 2020-01-17
 */
public class Basketball implements IBall {

    @Override
    public void say() {
        System.out.println("我是一个篮球,又被扔进筐里");
    }
}
/**
 * @Author zhouw
 * @Description 足球的具体实现
 * @Date 2020-01-17
 */
public class Football implements IBall {

    @Override
    public void say() {
        System.out.println("我是一个足球,被踢来踢去");
    }
}

工厂角色,工厂负责创建所有的产品实例

/**
 * @Author zhouw
 * @Description 球类工厂,负责生产各种球类,由于这个方法一般都是静态的,所以也叫静态工厂
 * @Date 2020-01-17
 */
public class BallFactory {

    public static IBall createBall(String name) {
        if ("football".equals(name)) {
            return new Football();
        } else if ("basketball".equals(name)) {
            return new Basketball();
        }

        // 默认创建Football
        return new Football();
    }
}

最后就是应用了

public class Application {

    public static void main(String[] args) {
        IBall ball1 = BallFactory.createBall("football");
        ball1.say();

        IBall ball2 = BallFactory.createBall("basketball");
        ball2.say();
    }
}

输出:

我是一个足球,被踢来踢去
我是一个篮球,又被扔进筐里

分析

简单工厂模式的优点就是简单,客户端直接调用静态方法,传入不同的产品名,就可以得到不同的产品,使用方便。通过将创建产品业务和产品本身的业务逻辑分离,降低系统的耦合性。但是缺点也很明显,创建产品的工厂类过于逻辑集中,拓展性很差,如果要再加一个产品“排球”,就要修改工厂创建产品对象的方法,而且如果这个工厂类有问题,就会影响到所有的产品对象的创建。

返回上一级目录:Java设计模式

以上是关于设计模式-简单工厂模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式学习——简单工厂模式工厂模式抽象工厂模式

设计模式之简单工厂模式

设计模式-简单工厂工厂方法模式抽象工厂模式详解

Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---工厂模式之简单工厂

C#之三十八 简单工厂设计模式

设计模式之简单工厂模式