天天看点

设计模式--Simple Factory 模式

simple factory模式(又称static factory模式),一个simple factory生产成品,而对客户端隐藏产品产生的细节。实作时定义一个产品介面(interface),并透过特定静态方法来建立成品。 

假设有一个音乐盒工厂,购买音乐盒的客人不用知道音乐盒是如何制作的,他只要知道如何播放音乐盒就可以了,以 uml 类别图来表示以上的概念:

设计模式--Simple Factory 模式

如上图所示的,musicboxdemo代表了客户的角色,它只依赖于imusicbox介面,而不关心特定的实作,实际如何产生imusicbox的实例由musicboxfactory完成,以一个简单的程式来实现上面这个uml类别图:

imusicbox.java

pianobox.java

violinbox.java

musicboxfactory.java

musicboxdemo.java

由于客户端只依赖于imusicbox介面,所以即使您日后改变了createmusicbox()中的实作方式,对客户端是一点影响也没有的。 

客户只要面对factory,客户依赖于产品介面,产品的具体实作是可以与客户隔开的,它们也是可以抽换的。