設計一個攝影師的類 該類中只有一個方法 該方法有2個參數,第一個參數表示拍照的工具,第2個參數表示拍攝的對象。

設計一個攝影師的類,該類中只有一個方法,photograph方法,該方法有2個參數,第一個參數表示拍照的工具,第2個參數表示拍攝的對象。


拍照的工具,可以是手機,也可以是相機,也可以是平板,可以是數碼相機,也可以是傻瓜式膠捲相機,(設置一個接口Photographable),
拍攝的對象可以是桌子,椅子,風景,人,花草等,(設置一個接口Target)

//class Target Photographable

//概念上的接口,系統對外提供的所有服務,類的所有能被外部使用者訪問
//的方法構成了類的接口
//interface定義的接口,明確地描述了系統對外提供的所以服務,能夠
//更清晰地把系統的實現細節和接口分離
public interface Photographable
{
//	public void takePhoto();
	public void takePhoto(Target target);
}


//class CellPhone

/**
手機父類,普通手機
*/
class CellPhone
{
	protected String brand;
	public CellPhone()
	{
		
	}
	public CellPhone(String brand)
	{
		this.brand=brand;
	}
	public void call()      //打電話
	{
		
	}
	public void sendMessage() //發短信
	{
		
	}
	public void receiveMessage() //收短信
	{
	 
	}

}

//class Commonphone

class CommonPhone extends CellPhone
{

}


//class SuperPhone

class SuperPhone extends CellPhone implements Photographable
{
	public SuperPhone()
	{
	}
	public SuperPhone(String brand)
	{
		super(brand);
	}
	public void takePhoto(Target target)
	{
		System.out.println("SuperPhone "+brand+" take photos of "+target.getOutlook());
	}
}

//class Camera

public abstract class Camera implements Photographable
{
	protected String brand;
	public Camera()
	{
	}
	public Camera(String brand)
	{
		this.brand=brand;
	}
}

//class DigitalCamera

public class DigitalCamera extends Camera
{
	public DigitalCamera()
	{
	}
	public DigitalCamera(String brand)
	{
		super(brand);
	}
	public void takePhoto(Target target)
	{
	   	System.out.println("Digital Camera "+brand+" take photos of "+target.getOutlook());
	}
	public void ViewPhoto()
	{
	
	}
	public void deletePhoto()
	{
	
	}
}

//class OpticalCamera

pubic class OpticalCamera extends Camera
{
	public OpticalCamera()
	{
	}
	public OpticalCamera(String brand)
	{
		super(brand);
	}
	public void takePhoto(Target target)
	{
	   	System.out.println("Optical Camera "+brand+"take photos of "+target.getOutlook());
	}
}
//interface Target

public interface Target
{
	public String getOutlook();
}
//class Person

class Person implements Target
{
	public String getOutlook()
	{
		return "a very beautiful or handsome person";
	}
}
//class Flower

class Flower implements Target
{
	public String getOutlook()
	{
		 return "a very beautiful flower";
	}
}

//class Photographer

class Photographer
{
	public void photograph(Photographable tool,Target target)
	{
		tool.takePhoto(target);
	}
}

//class Demo04

class Demo04
{
	public static void main(String args[])
	{
		Photographable ph01=new SuperPhone("HTC");
		Photographable ph02=new DigitalCamera("Cannon");
		
		Target target01=new Flower();
		Target target02=new Person();
		Photographer pher=new Photographer();
		
		pher.photograph(ph01,target01);
		pher.photograph(ph02,target02);
	}
}







發佈了47 篇原創文章 · 獲贊 18 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章