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

  • 相关阅读:
    cocos2dx android java调用C++
    cocos2dx android c++调用java
    cocos2dx android collection
    cocos2dx学习之windows android环境搭建
    windows phone 8.0 与 windows phone7.1区别
    C#文件同步工具教程
    Web2.0时代,RSS你会用了吗?(技术实现总结)
    介绍一篇关于session的好文章,写的很详细(jspservlet 技术)
    利用HttpModuler实现WEB程序同一时间只让一个用户实例登陆
    css
  • 原文地址:https://www.cnblogs.com/wuyanlin/p/8109550.html
Copyright © 2011-2022 走看看