java设计模式之简单工厂模式

简单工厂模式解析
本文介绍了简单工厂模式的基本概念,通过示例代码展示了如何使用该模式创建不同类型的对象,并讨论了其优点与局限性。

这几天在看java与模式这本书,为了方便以后回顾内容,就把一些东西记录在这里了。

工厂模式中有消费者,工厂与产品三种角色,工厂负责生产产品,消费者则消费产品。从消费者的角度看,是看不到具体的产品的构建过程的,只需要向工厂发送请求,即可以得到相应的产品,从而可以简化消费者的工作,同时屏蔽相应的内容。

简单工厂模式,顾名思义,即简化了的工厂模式。下面以一个具体的例子来描述之。

这是产品类的一个接口,

package com.test; public interface Product { public void action1(); public void action2(); }
以下是产品类接口的实现:

package com.test; public class ProductA implements Product{ public void action1() { System.out.println("ProductA action1"); } public void action2() { System.out.println("ProductA action2"); } public void myOwnAction(){ System.out.println("ProductA myOwnAction"); } } package com.test; public class ProductB implements Product{ @Override public void action1() { System.out.println("ProductB action1"); } @Override public void action2() { System.out.println("ProductB action2"); } }
接下来是工厂类:

package com.test; public class Factory { public static Product factory(String productName){ if("ProductA".equals(productName)){ return new ProductA(); }else if("ProductB".equals(productName)){ return new ProductB(); }else { return null; } } }
最后就是得到产品了:

package com.test; public class Test { public static void main(String args[]){ Product a = Factory.factory("ProductA"); Product b = Factory.factory("ProductB"); a.action1(); a.action2(); b.action1(); b.action2(); } }
简单工厂模式结构还是比较简单的,就不过多的描述了。

简单工厂模式是有缺点的,而且是很明显的缺点。就是,如果又有了一个ProductC的话,虽然对于消费者是没有影响的,但是工厂类(Factory)的源代码是需要再次修改的,这种行为完全没有符合开闭原则(对扩展开放,对修改关闭)的,所以工厂方法模式也就应运而生,很好的解决了这个问题。

下一节,将对工厂方法模式进行学习探讨。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值