Android工资翻倍篇之工厂模式
试想一下这样的场景,假如代码中用new创建一个类创建了20次,也就是说new了20次,突然有一天发现这个类的构造方法需要改变,里面需要新加一个参数,这个时候,就需要去找到这20个new的地方,然后分别更改,工厂模式就能解决这个问题。只需要更改factory中的创建方法就可以同时修改任意地方创建出的类。
这只是一种场景,另一种场景,假如我们new一个对象的时候需要进行一些判断,比如说在满足条件A的时候用一个构造方法进行创建,满足条件B的时候用另外一种构造方法创建等等,那么每次创建对象的时候都需要进行条件判断,这个时候我们可以使用工厂模式,你无须知道他内部是怎么创建的,只要调用factory.build方法进行创建即可
下面是信贷机构的核验你信用额度的两个类,分别提供了在线核验和离线核验两种方案,在线核验需要你输入身份证id,然后根据信贷代理机构进行核验,离线核验是在机构人员不在的情况下弹出对话框,让用户输入一些信息进行离线的核验,并返回你的信贷额度。所以我们每次做额度评估的时候都需要判断信贷机构是否在线才能评估出额度,这样非常麻烦,因为我们在每次进行评估的时候都需要写一长串的代码来进行判断机构是否在线才能进行评估(评估方法的调用在不同类中出现时),这些判断的代码就会有非常严重的重复。
我们使用工厂模式进行重构
因为调用工厂模式的create方法返回的是一个类,所以我们需要创建一个公共的接口
CreditCheck
,让online和offline分别实现这个接口并实现里面的公共方法,分别返回评估数据,然后就可以统一返回一个我们需要的类CreditCheck。