在客户端程序中过多的使用new去实例化就会造成耦合过强的问题。使用工厂模式可以有效地将这些实例化工作抽离到客户程序之外,使程序更多的依赖抽象类而不是具体的类,从而解耦。
简单工厂
简单工厂将同源类的实例化工作(new)归类一个独立的“工厂类”中执行,好让具体实例化的过程从客户代码中移除,起到解耦的作用。
书中以Pizza店为例,架构写的比较庞大,因为需要偷懒,这里以文具店卖笔为例。
Stationer为文具店实例,一共卖3种笔,Pen是所有笔的超类。客户需要获取其中一种笔时,只需向Stationer.getPen方法传入具体的type,即可获取到对应的Pen实例。
public class SimplePenFactory {
public static Pen getPen(String type){
if("art".equals(type)){
return new ArtPen();
}else if ("ink".equals(type)){