zoukankan      html  css  js  c++  java
  • 简单工厂

    简单工厂模式的概念 

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

      简单工厂模式的代码:

    /**
     * 产品的抽象接口  人类
     *
    
     */
    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();
        }
    }
    

      

  • 相关阅读:
    svn命令行使用积累
    linux下编译出现tmp空间不足解决办法
    secure CRT the remote system refused the connection 解决办法
    Makefile 中符合的使用
    函数指针作为某个函数的参数及定义函数指针(回调函数)
    C语言指针变量作为函数参数
    虚拟机下安装ubuntu后root密码登录失败的问题
    管理者需要知道的十大经典理论
    System V 与 POSIX
    带你吃透RTMP
  • 原文地址:https://www.cnblogs.com/cuixiaomeng/p/6875136.html
Copyright © 2011-2022 走看看