应用最广泛的模式-工厂方法模式

一.工厂方法模式介绍

工厂方法模式是一种结构简单的模式,在平时开发中应用很广泛。

二.工厂方法模式的定义

定义一个用于创建对象的接口,让子类决定实例化哪个类。

三.工厂方法模式的使用场景

在任何需要生成复杂对象的地方,都可以使用工厂方法模式。复杂对象适合使用工厂模式,用new就可以完成创建的对象无需使用工厂模式。

四.示例

public abstract class System {
    
    
    public abstract void method();
}
public class Android extends System {
    
    

    public static String ANDROID="Android";

    @Override
    public void method() {
    
    
        java.lang.System.out.println("Android");
    }
}
public class Ios extends System {
    
    

    public static String IOS = "ios";

    @Override
    public void method() {
    
    
        java.lang.System.out.println("ios");
    }
}
public class Factory {
    
    

    public System create(String type) {
    
    
        if (type.equals(Android.ANDROID)) {
    
    
            return new Android();
        } else if (type.equals(Ios.IOS)) {
    
    
            return new Ios();
        }
        return null;
    }
}
 Factory factory = new Factory();
 System android = factory.create(Android.ANDROID);
 System ios = factory.create(Ios.IOS);
 android.method();
 ios.method();

展示:

2021-04-03 13:11:58.035 12830-12830/? I/System.out: Android
2021-04-03 13:11:58.035 12830-12830/? I/System.out: ios

这是一种方式,我们还可以用反射的方式来实现。

public class Factory {
    
    

    public <T extends System> T create(Class<T> cls) {
    
    
        System system = null;
        try {
    
    
            system = (System) Class.forName(cls.getName()).newInstance();
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
        return (T) system;
    }
}
 Factory factory = new Factory();
 System android = factory.create(Android.class);
 System ios = factory.create(Ios.class);
 android.method();
 ios.method();

五.总结

工厂模式是常用的设计模式,但也有缺点,因为要引入抽象类,会导致类结构的复杂化。

猜你喜欢

转载自blog.csdn.net/m0_48440239/article/details/115414811