設計模式之狀態模式java ——購物
1、定義狀態接口,也可以是抽象類abstract,這裏我喜歡用接口Interface
- 購物接口
// 購物接口
public interface IShopping
{
<span style="white-space:pre"> </span>//接口是模擬購物2中情況,正常銷售,促銷活動。兩個狀態
<span style="white-space:pre"> </span>public void sale();
}
2、實例化具體的狀態,這裏我有兩個一個是正常購物,一個促銷購物
- 正常購物
// 平常購物類實現購物接口
public class ImpNormalShopping implements IShopping
{
@Override
public void sale()
{
System.out.println("正常情況下,只買自己 1 件的東西!!!");
}
}
- 促銷購物
// 活動促銷類實現購物接口
public class ImplActiveShopping implements IShopping
{
@Override
public void sale()
{
System.out.println("促銷、大甩賣了,買了一大堆東西!!!");
}
public void setStatue( IShopping statue)
{
statue.sale();
}
}
- 控制狀態的類
// 商家控制類
public class ConreateBoss
{
/**
* 模擬具體的賣家
*/
// 默認是正常銷售
private IShopping statue = new ImpNormalShopping();
public ConreateBoss()
{
}
public void sale()
{
statue.sale();
}
public void setStatue(IShopping statue)
{
this.statue = statue;
}
}
- 客戶端顯示
// 客戶端
public class Main
{
public static void main(String[] args)
{
// 一般買家都是少買東西
ConreateBoss boss = new ConreateBoss();
boss.sale();
// 活動來了,就多買點,因爲便宜嘛
boss.setStatue(new ImplActiveShopping());
boss.sale();
}
}
- 運行結果