Plugin モジュール

抽象クラスを用いた、プラグインの作成方法を提案します。

コンパイルせずに、任意のクラスを使うという「プラグイン」の実現です。

ライブラリにするのが伝統的手法ですが、抽象クラスを用いると、任意のクラスをコンパイル抜きで使えます。

命令実行メソッドを、後からオーバーライドする形にすればよいわけです。

まず、基礎クラスとなる、Pluginクラスを定義します。

   public abstract class Plugin
   {
       public abstract void execute();   
   }

このPluginクラスを継承し、SamplePluginというクラスを作成するとします。

execute() メソッドをオーバーライドします。

   public class SamplePlugin extends Plugin
   {
       public void execute()
       {
           System.out.println("Sample Plug-in");   
       }
   }

このSamplePluginクラスを使うには、クラス名をハードコードしてインスタンス化して使う方法もありますが、ここではcallPlugin()というメソッドを定義し、任意のプラグイン名を指定すればそのクラスをインスタンス化し、オーバーライドされたexecute()メソッドを呼び出しています。

   public void callPlugin(String pluginName)
   {
        try
            {
                Class pluginClass=Class.forName(pluginName);
                if(pluginClass!=null)
                    {
                        Plugin plugin=(Plugin)pluginClass.newInstance();   
                        plugin.execute();
                    }
            }
        catch(Exception e)
            {
                System.out.println("Please install "+pluginName);
            }
   }
inserted by FC2 system