设计模式-工厂模式
工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。
即工厂模式是用来创建对象的,是吧。
但是工厂有大有小,有好有差,现实中是这样吧吧。
根据工厂的能力,我们将工厂模式分为3种:
1)简单工厂模式
简单工厂,只会生产一种产品
例如我们要生产苹果手机:
首先苹果手机,自己肯定是不会生产的哈, 即你不能去new(好像是废话。。。。。)
//这个工厂就会生产iPhone手机
public IpnoneFactory
{
public static IPhone createIphone()
{
/*我生产了Iphone*/
}
}
2) 工厂方法模式
这个工厂就生产产品而言,就厉害点了。
例如, 这个工厂可以生产手机, 但他可以生产许多种手机,例如华为、三星、Moto。。。。。。
//大工厂 (富士康可以吗。。。。)
public interface PhoneFactory {
void createPhone();
}
//具体生产产品
public class MotoPhoneFactory implements PhoneFactory {
@Override
public void createPhone() {
System.out.println("MotoPhone....");
}
}
public class SamsungPhoneFactory implements PhoneFactory {
@Override
public void createPhone() {
System.out.println("SamsungPhone.....");
}
}
public class TestFactory {
public static void main(String[] args) {
PhoneFactory factory = new MotoPhoneFactory();
Phone phone = factory.createPhone();
}
}
3)抽象工厂模式
这个工厂相比于上面的,他可以生产更多种类的产品.
public abstract class AbstractFactory {
public abstract Phone createPhone();
public abstract PC createPC();
public abstract Camera createCamera();
}
//具体工厂类,(好像还是只有富士康能胜任)
public class FuShiKangFactory extends AbstractFactory{
@Override
public Phone createPhone() {
/*.......*/
}
@Override
public PC createPC() {
/*.........*/
}
@Override
public Camera createCamera() {
/*.....*/
}
}
//测试类
public class Test {
public static void main(String[] args) {
AbstractFactory f = new FuShiKangFactory();
Phone phone = f.createPhone();
PC pc = f.createPC();
Camera camera = f.createCamera();
}
}
以上是个人,对工厂模式的简单理解,若理解错误,请见谅。