Java设计模式(二)----工厂模式
其实在工作中时已经无意中正在使用工厂模式来设计代码了,可能自己并没有察觉。
工厂模式可以细分为三种工厂:
1. 简单工厂模式
2.工厂模式
3.抽象工厂模式
1. 简单工厂模式
这种模式或许是使用最多的情况了,毕竟有时候业务并不是那么复杂,封装的那么多反而可读性大大降低了。简单来说,这种模式就是用一个具体的类去创建其他的类,一般来说这些其他的类是基于基类或者是同一接口的。
角色组成:
1. 工厂类角色:SimpleFactory担任,它决定去生成哪一个实例对象,一般都是if/else 或者switch 逻辑分支去支持。
2.抽象产品角色:抽象出的方法。
3.具体产品角色:工厂类所创建出的对象就是此对象。
缺陷:
当新增新的具体产品时,需要修改工厂类角色的代码,否则没法扩展。
2.工厂模式
工厂模式是简单工厂模式的进一步抽象,工厂模式内不再只由一个工厂类去决定哪一个产品被实例化,这个决定被放到抽象工厂的子类具体工厂类去做。
角色组成:
1.抽象工厂角色:这是工厂模式的核心,与应用程序无关,是具体工厂角色必须实现的接口或者必须继承的父类。
2.具体工厂角色:它含有和具体逻辑有关的代码,是具体实例对象生产的地方。
3.抽象产品角色:和上述类似。
4.具体产品角色:具体工厂角色生产出的此角色实例。
优势:
符合开闭原则,当有新的产品出现时,只需要按照抽象产品角色和抽象工厂角色提供的现有逻辑进行继承,不必修改原有代码。
缺陷:
同一等级结构中,新增新的产品。不同等级无法解决。
3.抽象工厂模式
上述可见,工厂模式针对的是一个产品等级,而抽象工厂模式是针对的一个产品族。
参考博客: