使用反射动态加载

开发一个音乐播放器等等程序或者应用,往往可能会用多种类型的变化,如果只是单纯使用if else或者
switch case 通过判断类型再来进行不同种类的选择,会使得代码很冗杂并且后期修改比较麻烦,更好的思想是使用面向对象的多态,将所有的功能声明在一个类里面,然后再用具体的类来继承这个公用类,并且对其中的播放器(此处以播放器为例)进行方法重写。
本篇文章使用的是反射,相对于多态代码减少了一些:

先定义一个接口:

public interface Play_all 
{
    void play();
}

具体的实现类,每个类都实现该接口:

public class WAV implements Play_all {
    @Override
    public void play() 
    {
        System.out.println("播放Wav");
    }
}
public class MP3 implements Play_all {
    @Override
    public void play() 
    {
        System.out.println("播放mp3");
    }
}

最后是主类

//这是主类,通过反射播放不同类型的文件,即使用类
public class MainLei 
{
    static String s;
    public static void main(String [] args)
    {
        try 
        {
            @SuppressWarnings("rawtypes")
            Class c = Class.forName(s.toUpperCase());
            Play_all p = (Play_all)c.newInstance();
            p.play();
        } 
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

接下来如果还有新的需求只需重新定义一个具体类并且实现接口即可。

你可能感兴趣的:(java,面向对象,多态)