zoukankan      html  css  js  c++  java
  • java设计模式之简单工厂设计模式

    1.定义

    提供一个创建对象实例的功能,而无须关心其具体实现.被创建实例的类型可以是接口,抽象类,也可以是具体的类.

     2.认识简单工厂

    1).简单工厂的功能:-->可以用来创建接口,抽象类,或普通类的实例

    2).静态工厂:-->通常把简单工厂类实现成一个工具类,直接使用静态方法就可以了,也就是说简单工厂的方法通常都是静态的,所以也被称为静态工厂

    3).万能工厂:-->一个简单工厂理论上可以用来构造任何对象,所以又称之为“万能工厂”

    3.简单工厂的命名

    (1)类名建议为“模块名称+Factory”,比如:用户模块的工厂就称为:

    UserFactory

    (2)方法名称通常为“get+接口名称”或者是“create+接口名称”

    (3)不建议把方法名称命名为“new+接口名称”

     4.代码实例

    接口类:

    /**
     * 接口类
     * @author Administrator
     *
     */
    public interface Api {
        /**
         * 接口方法--本例为打印
         * @param str  要打印的字符串
         */
        public void execute(String str);
    }

    实现类A:

    /**
     * 执行者A
     * @author Administrator
     *
     */
    public class ExecuterA implements Api{
    
        @Override
        public void execute(String str) {
            System.out.println("hello world! i am "+str);
            
        }
        
    }

     实现类B:

    /**
     * 执行者B
     * @author Administrator
     *
     */
    public class ExecuterB implements Api{
    
        @Override
        public void execute(String str) {
            System.out.println("hello world! i am "+str);
            
        }
        
    }

    工厂类:

    /**
     * 执行者的工厂
     * @author Administrator
     *
     */
    public class ExeFactory {
        
        /**
         * 创建execute
         * @param exeName  执行者的名字
         * @return  execute的实例
         */
        public static Api buildExe(String exeName) {
            if("A".equals(exeName))return new ExecuterA();
            if("B".equals(exeName))return new ExecuterB();
            return new ExecuterA();//默认创建执行者A
        }
    }

    客户端类:

    /**
     * 客户端
     * @author Administrator
     *
     */
    public class Client {
        public static void main(String[] args) {
             ExeFactory.buildExe("A").execute("TomcatA");
             ExeFactory.buildExe("B").execute("TomcatB");
        }
    }

    结果:

    hello world! i am TomcatA
    hello world! i am TomcatB

    5.总结

    什么时候选择简单工厂?

    1).完全的封装具体隔离,外部只能通过接口访问

    2).想要对象的集中管理

  • 相关阅读:
    n8n 基于node 的流程自动化工具
    kubectl-trace 基于bpftrace 的kubernetes 集群性能分析工具
    bcc 基于bpf 分析linux 系统性能的强大工具包
    使用arthas 生成火焰图分析jvm
    openjdk11 stretch基础镜像无法找到对应openjdk dbg 包的问题
    async-profiler 容器使用常见问题
    使用jattach 在host 节点查看容器jvm信息
    使用async-profiler简单分析zeebe 工作流引擎的性能
    minio select api 试用
    使用zeebe DebugHttpExporter 查看zeebe 工作流信息
  • 原文地址:https://www.cnblogs.com/wuyanlin/p/8109550.html
Copyright © 2011-2022 走看看