zoukankan      html  css  js  c++  java
  • 关于工厂模式的想法

    工厂模式分为:静态工厂、工厂方法、抽象工厂。

    工厂模式好处(我想到的):

    1、对象统一管理,重复使用,修改方便(改一处,多处同时改动)

    2、对象的产生和使用分离(客户不关心创建的细节,只关心如何使用”单一职责链原则”)

    以前看静态工厂方法大部分是这样的(这里主要不研究工厂模式)

    public class FactoryDemo{  
        public static Person createPerson(String typeName){
            if(typeName.equals("student")){  
                return  new Student();  
            }else if(typeName.equals("teacher")){  
                return  new Teacher();  
            }  
        }  
    }

    但是我就在想,如果Person接口的实现类非常多,那么这个工厂不是显得十分臃肿吗?

    工厂模式有解决的方法(这里不多说),我只说当时我的一些想法,这里传的参数都是变化的,我能传不变的参数进来吗?

    于是想到了反射,于是我做如下修改:

    public class PersonFactory{ 
        public static Person createPerson(Class demo) throws Exception{
            if(Person.class.isAssignableFrom(demo)){
                Person p = (Person)demo.newInstance();
                return p;
            }else{
                throw new RuntimeException("该工厂无法生产非Person接口实现类");
            }
           
        }  
    }

    这样的话这个工厂就不需要变化

    如果要获得Student对象,只需要调用PersonFactory.createPerson(Student.class)即可

    如果要获得Teacher对象,只需要调用PersonFactory.createPerson(Teacher.class)即可

  • 相关阅读:
    [LeetCode] Binary Tree Preorder Traversal
    Linux下搭建JSP环境
    Linux系统捕获数据包流程
    如何使用Linux套接字?
    IPod在Linux下的实战
    将手机流氓软件彻底赶出去
    如何修复和检测Windows系统漏洞
    防止网络渗透措施两则
    Cisco安全防护读书笔记之一Cisco系统设备协议漏洞
    至顶网推荐-Rpm另类用法加固Linux安全
  • 原文地址:https://www.cnblogs.com/liruiloveparents/p/5041051.html
Copyright © 2011-2022 走看看