博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于工厂模式的想法
阅读量:5257 次
发布时间:2019-06-14

本文共 1034 字,大约阅读时间需要 3 分钟。

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

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

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)即可

转载于:https://www.cnblogs.com/liruiloveparents/p/5041051.html

你可能感兴趣的文章
67. Add Binary
查看>>
131. Palindrome Partitioning
查看>>
038--HTML
查看>>
Android入门书籍推荐《learning android》
查看>>
Sencha touch 开发系列:移动应用开发之组件
查看>>
mysql 数据备份及pymysql模块
查看>>
python 连接MySQL
查看>>
星际地图2
查看>>
第二次冲刺个人博客07
查看>>
Andriod串口通信开发(免ROOT权限)
查看>>
硬币表示
查看>>
[转载] Discovery——蛇之美
查看>>
[转载] 杜拉拉升职记——28 空手套白狼
查看>>
微服务网关从零搭建——(五)修改网关身份验证指定部分
查看>>
poj 3264 Balanced Lineup(线段数求区间最大最小值)
查看>>
php中读写excel表格文件示例。
查看>>
Newtonsoft.Json2.0下面序列化和反序列化
查看>>
最经典的常用拍照姿势大全,顶级POSE
查看>>
五种常见的ASP.NET安全缺陷
查看>>
上周热点回顾(3.5-3.11)
查看>>