工厂模式是一种创建型设计模式,它提供一种通用的接口来创建对象,但是让子类决定实例化哪个类。 工厂模式将对象的创建过程封装在一个工厂类中,避免直接调用构造函数,提高代码的灵活性和可维护性。 工厂模式实现了依赖倒置原则,即面向接口编程而不是面向实现编程。
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
使用工厂模式的好处
解耦
通过工厂模式可以把对象的创建和使用过程分割开来。比如说 Class A 想调用 Class B的方法,那么我们无需关心B是如何创建的,直接去工厂获取就行。
减少代码量,易于维护
如果我们直接new一个对象时,如果需要的对象构造方法比较复杂,那么可能需要一连串的代码去创建对象,如果在别的类中又需要创建该对象,那么代码的重复度肯定不小。通过工厂模式的话,我们把对象创建的具体逻辑给隐藏起来了,交给工厂统一管理,这样不仅减少了代码量,以后如果想改代码的话,只需要改一处即可,也方便我们日常的维护。
缺点
增加?个产品,需要实现对应的具体??类和具体产品类;
每个产品需要有对应的具体??和具体产品类;
我这里是根据职位去审查该职位可以审批的假条
1.公布一个工厂实现接口
public interface Review { void review(); }
2.具体业务方法
public class TeamLeader implements Review{ @Override public void review() { System.out.println("TeamLeader review"); } }?
?
public class SourcingManager implements Review{ @Override public void review() { System.out.println("SourcingManager review"); } }
3.工厂类
public interface RoleFactory { Review checkReview(); }?
4.指向对应的工厂
public class SourcingManagerFactory implements RoleFactory{ @Override public Review checkReview() { return new SourcingManager(); } }?
public class TeamLeaderFactory implements RoleFactory{ @Override public Review checkReview() { return new TeamLeader(); } }?
?5.Test
Review sourcingManager = new SourcingManagerFactory().checkReview(); sourcingManager.review(); Review teamLeader = new TeamLeaderFactory().checkReview(); teamLeader.review();