一个类的构造比较复杂,比如有20个参数。比如除法操作类,需要初始化的参数有精度,四舍五入、向下取整还是向上取整等等。有10个客户端,原来要写10次。工厂模式 首先 是封装类的构造过程。
简单工厂
当这样的类有很多兄弟类,比如加法操作类,减法操作类,乘法操作类,增加一层抽象,通过if else/switch case手段,把4大类的创建过程收敛到一个地方。
优点:调用方可以通过字符串初始化一个类。
缺点:不符合开闭原则,增加一个阶乘类,需要修改简单工厂。
工厂模式
为每个操作类创建一个工厂类,用来专门初始化这个类。
客户端从记住除法操作类变为记住操作类对应的工厂类。
优点:满足开闭原则。
缺点:客户端从记住具体类变为具体类对应的工厂类,相对于简单工厂,成本增加了。但是 仍然 减小了实例化类的成本;每增加一个操作类都要同时增加工厂类。
网友评论