Java设计模式(二)----工厂模式

来源:互联网 发布:jquery post get json 编辑:程序博客网 时间:2024/06/05 13:28

其实在工作中时已经无意中正在使用工厂模式来设计代码了,可能自己并没有察觉。

工厂模式可以细分为三种工厂:

1. 简单工厂模式

2.工厂模式

3.抽象工厂模式


1. 简单工厂模式

这种模式或许是使用最多的情况了,毕竟有时候业务并不是那么复杂,封装的那么多反而可读性大大降低了。简单来说,这种模式就是用一个具体的类去创建其他的类,一般来说这些其他的类是基于基类或者是同一接口的。


角色组成:

1. 工厂类角色:SimpleFactory担任,它决定去生成哪一个实例对象,一般都是if/else 或者switch 逻辑分支去支持。

2.抽象产品角色:抽象出的方法。

3.具体产品角色:工厂类所创建出的对象就是此对象。

缺陷:

当新增新的具体产品时,需要修改工厂类角色的代码,否则没法扩展。


2.工厂模式

工厂模式是简单工厂模式的进一步抽象,工厂模式内不再只由一个工厂类去决定哪一个产品被实例化,这个决定被放到抽象工厂的子类具体工厂类去做。


角色组成:

1.抽象工厂角色:这是工厂模式的核心,与应用程序无关,是具体工厂角色必须实现的接口或者必须继承的父类。

2.具体工厂角色:它含有和具体逻辑有关的代码,是具体实例对象生产的地方。

3.抽象产品角色:和上述类似。

4.具体产品角色:具体工厂角色生产出的此角色实例。

优势:

符合开闭原则,当有新的产品出现时,只需要按照抽象产品角色和抽象工厂角色提供的现有逻辑进行继承,不必修改原有代码。

缺陷:

同一等级结构中,新增新的产品。不同等级无法解决。


3.抽象工厂模式

上述可见,工厂模式针对的是一个产品等级,而抽象工厂模式是针对的一个产品族。


参考博客:

设计模式

工厂模式


原创粉丝点击