インタフェースの例


1.インタフェースを定義します.
    
public interface IRequest
{
    public void execute();
}

 2. 2つの特定のクラス:
  
public class HelloRequest implements IRequest
{
      private String name;
     
      public HelloRequest(String name)
      {
           this.name = name;
      }
      
       public void execute()
      {
            System.out.printf("Hello %s! %n",name);
      }
}

public class WelcomeRequest implements IRequest
{
      private String place;
     
      public WelcomeRequest(String place)
      {
           this.place = place;
      }
      
       public void execute()
      {
            System.out.printf("Welcome to %s! %n",place);
      }
}


 3. HelloRequestとWelcomeRequestは2つの異なるタイプであるが,いずれもIRequestを実現するdoRequest()メソッドを設計した.したがってdoRequest()はIrequestがどのようなメソッドを定義しているかを知っていれば,HelloRequestとWelcomeRequestのインスタンスを実現することができ,伝達されたオブジェクトがどのクラスのインスタンスであるかを知らなくてもよい.
 
public class RequestDemo
{
	public static void main(String[] args)
	{
		for(int i = 0; i < 10; i++)
		{
			int n = (int) (Math.random() * 10) % 2;   // 
			switch(n)
			{
				case 0:
				  doRequest(new HelloRequest("Jim"));
			    case 1:
				  doRequest(new WelcomeRequest("Qinhuangdao"));	
			}
		}
	}

	public static void doRequest(IRequest request)
	{
		request.execute();
	}
};