Java教程

研磨设计模式--简单工厂

本文主要是介绍研磨设计模式--简单工厂,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

简单工厂模式的定义:

提供一个创建对象实例的功能,而无需关心其具体实现,被创建实例的类型可以是接口、抽象类,也可以是具体的类。
将要创建的类:
Api:定义客户所需要的功能接口。
Impl:具体实现Api的实现类。
Impl2:具体实现Api的实现类。
Factory:工厂,选择合适的实现类,来创建Api接口对象。
Client:客户端,通过Factory来回去Api接口对象,然后面向Api接口编程。

/**
 * 接口的定义,该接口可以通过简单工厂来创建
 */
public interface Api {
    void test(String s);
}
public class Impl implements Api{
    @Override
    public void test(String s) {
        // 实现功能的代码
        System.out.println("Impl s= "  + s);
    }
}
public class Impl2 implements Api{
    @Override
    public void test(String s) {
        System.out.println("Impl2 s= "  + s);
    }
}

/**
 * 工厂类,用来创建Api对象
 */
@Slf4j
public class Factory {

// 方式1
    //    public static Api createApi(Integer type) {
//        Api api = null;
//        if (type == 1) {
//            return new Impl();
//        } else if (type == 2) {
//            return new Impl2();
//        }
//        return api;
//    }
    public static Api createApi(Class cla) {

        Api api = null;
        try {
            api = (Api) cla.newInstance();
        } catch (Exception e){
            log.info("Exception:", e);
        }
        return api;
    }
}
/**
 * 客户端
 */
public class Client {
// 方式1
//    public static void main(String[] args) {
//        Api api = Factory.createApi(2);
//        api.test1("正在使用简单工厂");
//    }

    public static void main(String[] args) {
        Api api = Factory.createApi(Impl2.class);
        api.test("正在使用简单工厂");
    }
}

简单工厂模式优点:

帮助封装:简单工厂虽然很简单,但是非常友好地帮助我们实现了组建的封装,让组建外部能真正的面向接口编程
解耦:通过简单功能,实现了客户端和具体实现类的解耦

简单工厂模式缺点:

可能增加客户端的负责度
不方便扩展子工厂

何时选择简单工厂模式:

如果想要完全封装隔离具体实现,让外部只能通过接口来操作封装体,可以选择简单工厂。
如果想要把对外创建对象的职责集中管理和控制,可以选择简单工厂。

这篇关于研磨设计模式--简单工厂的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!