我們以去KFC訂餐為例
步驟1
這是KFC所賣的食物
public class Food {
private String Zhaji;//炸雞
private String Kele;//可樂
private String Hanbao;//漢堡
public String getZhaji() {
return Zhaji;
}
public void setZhaji(String zhaji) {
Zhaji = zhaji;
}
public String getKele() {
return Kele;
}
public void setKele(String kele) {
Kele = kele;
}
public String getHanbao() {
return Hanbao;
}
public void setHanbao(String hanbao) {
Hanbao = hanbao;
}
}
步驟2
KFC店
public abstract class KFC {
Food food = new Food();
void makeZhaji() {};
void makeKele() {};
void makeHanbao() {};
Food getFood() {
return food;
};
}
步驟3
KFC賣的A套餐
public class KFC_A extends KFC{
@Override
void makeZhaji() {
// TODO Auto-generated method stub
super.makeZhaji();
food.setZhaji("炸全雞");
}
@Override
void makeKele() {
// TODO Auto-generated method stub
super.makeKele();
food.setKele("小杯可樂");
}
@Override
void makeHanbao() {
// TODO Auto-generated method stub
super.makeHanbao();
food.setHanbao("雞腿堡");
}
}
B套餐
public class KFC_B extends KFC{
@Override
void makeKele() {
// TODO Auto-generated method stub
super.makeKele();
food.setKele("中杯可樂");
}
@Override
void makeHanbao() {
// TODO Auto-generated method stub
super.makeHanbao();
food.setHanbao("鱈魚堡");
}
}
步驟4
/**
* 菜單
* @author USER
*
*/
public class KFCMenu {
/**
* A套餐
* @param a
* @return
*/
public Food getA(KFC_A a) {
a.makeHanbao();
a.makeKele();
a.makeZhaji();
return a.getFood();
}
/**
* B套餐
* @param b
* @return
*/
public Food getB(KFC_B b) {
b.makeHanbao();
b.makeKele();
return b.getFood();
}
}
步驟5
測試
KFCMenu menu = new KFCMenu();
//套餐A
Food food_a = menu.getA(new KFC_A());
System.out.println(food_a.getHanbao());
System.out.println(food_a.getKele());
System.out.println(food_a.getZhaji());
System.out.println("==================");
//套餐B
Food food_b = menu.getB(new KFC_B());
System.out.println(food_b.getHanbao());
System.out.println(food_b.getKele());