简单工厂:工厂就是用来创造东西的,在java里面,通常是用来创造接口的,也可以创造抽象类,或是具体的类实例。
其本质是:选择实现
优点:帮助封装,真正面向接口编程;解耦-客户端根本不知道接口是由谁实现的。
下面就写一个简单的例子:
先定义一个USB的简单接口行为:
再定义一个具体的实现类:
然后定义一个简单工厂类:
客户端调用的例子:
以上就是一个简单工厂的例子,当然如果要在该工厂中增加一种新的实现,要修改该工厂类,在里面增加一种得到其它实例的方法,当然解决这个问题,可以创建带参数的工厂类,如改为:
public static UsbApi createUsbApi(int type){
//根据类型返回相应的实例 }
}
当然还可以根据配置文件,利用反射来动态创建需要用到的实例等方式解决扩展问题。