• 简单工厂


    简单工厂模式的概念 

    就是创建一个工厂类,对实现了同一接口的一些类进行实例的创建。简单工厂模式的是实质是由一个工厂类根据传入的参数,动态决定应该的创建哪一产品类的实例。

      简单工厂模式的代码:

    /**
     * 产品的抽象接口  人类
     *
    
     */
    public interface Human {
        
        public void say();
    
    }
    

     然后定义男人和女人,同样有说话的方法。

    /**
     * man  男人
     */
    public class Man implements Human {
    
        @Override
        public void say() {
            System.out.println("男人");
        }
    
    }
    
    /*女人
     */
    public class Woman implements Human {
    
        @Override
        public void say() {
            System.out.println("女人");
        }
    
    }
    

      写一个工厂类,用来创建男人和女人

    第一种方法是使用逻辑判断的方法实现的

    /**
     * 简单工厂
     *
     */
    public class SampleFactory {
        public static Human makeHuman(String type){
            if(type.equals("man")){
                Human man = new Man();
                return man;
            }else if(type.equals("womman")){
                Human woman = new Woman();
                return woman;
            }else{
                System.out.println("生产不出来");
                return null;
            }            
        }
    }
    

      第二种方法是使用放射实现的,我觉得这一类的实现方式比较好。

    /**
     * 简单工厂放射实现
     *
     */
    public class SampleFactory1 {
        public static Human makeHuman(Class c){
            Human human = null;
            try {
                human = (Human) Class.forName(c.getName()).newInstance();
            } catch (InstantiationException e) {
                // TODO Auto-generated catch block
                System.out.println("不支持抽象类或接口");
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                System.out.println("没有足够权限,即不能访问私有对象");
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                System.out.println("类不存在");
                e.printStackTrace();
            }    
            return human;
        }
    }
    

      创建测试类

    /**
     * 简单工厂测试
     *
     */
    public class Client {
        public static void main(String[] args) {
    //        Human man = SampleFactory.makeHuman("man");
    //        man.say();
    //        Human womman = SampleFactory.makeHuman("womman");
    //        womman.say();
    //        Human test = SampleFactory.makeHuman("tttt");
            
            Human man = SampleFactory1.makeHuman(Man.class);
            man.say();
            Human woman = SampleFactory1.makeHuman(Woman.class);
            woman.say();
        }
    }
    

      

  • 相关阅读:
    Jenkins的maven工程打包的时候怎么指定不同环境的配置文件
    杂记待整理
    zabbix监控网络的出入口流量
    MySQL的恢复脚本
    mysql 备份恢复图
    切割haproxy的日志
    zabbix 监控MySQL
    svn 的备份还原
    svn做目录访问控制(AuthzSVNAccessFile)
    MySQL多实例
  • 原文地址:https://www.cnblogs.com/cuixiaomeng/p/6875136.html
Copyright © 2020-2023  润新知