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).想要对象的集中管理

  • 相关阅读:
    ****jQuery
    LANMPS 一键PHP环境安装包(转)
    微信支付授权目录填写规则
    ***四种参数传递的形式——URL,超链接,js,form表单
    WDCP控制面板安装卸载
    html meta标签使用总结(转)
    适合wordpress中文网站的seo优化插件 DX-Seo
    事件驱动框架(二)——状态机【转】
    深入剖析变长参数函数的实现【转】
    Makefile经典教程(一个很棒很清晰的讲解)【转】
  • 原文地址:https://www.cnblogs.com/wuyanlin/p/8109550.html
Copyright © 2011-2022 走看看