日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

策略模式 极其简单的列子

發(fā)布時間:2023/11/27 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 策略模式 极其简单的列子 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

第一篇博客

本文來自 自己老師 的博客 http://blog.csdn.net/lovelion/article/details/7818983

題目:某軟件公司為某電影院開發(fā)了一套影院售票系統(tǒng),在該系統(tǒng)中需要為不同類型的用戶提供不同的電影票打折方式,具體打折方案如下:

????? (1) 學(xué)生憑學(xué)生證可享受票價8折優(yōu)惠;

????? (2) 年齡在10周歲及以下的兒童可享受每張票減免10元的優(yōu)惠(原始票價需大于等于20元);

????? (3) 影院VIP用戶除享受票價半價優(yōu)惠外還可進行積分,積分累計到一定額度可換取電影院贈送的獎品。

????? 該系統(tǒng)在將來可能還要根據(jù)需要引入新的打折方式

1.要滿足開閉原則 二話不說先定義抽象類或接口

namespace StrategyTest
{/// <summary>/// 抽象策略類  (折扣類)/// </summary>public  interface IAbsStrategy{/// <summary>/// 打折 抽象方法(用拼音。。)/// </summary>/// <param name="price">價格</param>/// <returns>double</returns>double DaZhe(double price);}
}

2.年齡在十歲以下-10元

namespace StrategyTest
{public class ChildrenDaZhe:IAbsStrategy{/// <summary>/// 兒童減10元/// </summary>/// <param name="price"></param>/// <returns></returns>public double DaZhe(double price){Console.Write("兒童價:");return price - 10;}}
}

3.學(xué)生打八折

namespace StrategyTest
{public  class StudentDaZhe:IAbsStrategy{/// <summary>/// 學(xué)生8折/// </summary>/// <param name="price"></param>/// <returns></returns>public double DaZhe(double price){Console.Write("學(xué)生價:");return price * 0.8;}}
}


4.VIP打5折

namespace StrategyTest
{public class VIPDaZhe:IAbsStrategy{/// <summary>/// VIP打5折 積分增加/// </summary>/// <param name="price"></param>/// <returns></returns>public double DaZhe(double price){Console.Write("VIP價格:");Console.Write("積分增加 +1  \r\n");//積分這里意思一下。。。return price * 0.5;}}
}

?

namespace StrategyTest
{/// <summary>/// 電影票 環(huán)境類/// 提供兩個注入方法(注入為抽象類) 1.構(gòu)造函數(shù)注入 2.方法注入/// </summary>public class MovieTicket{private IAbsStrategy abs;//抽象打折private double price;//價格public MovieTicket(){}//構(gòu)造注入public MovieTicket(IAbsStrategy abs){this.abs = abs;}public double Price{get { return price; }set { price = value; }}//方法注入public void SetStrategy(IAbsStrategy myAbs){this.abs = myAbs;}/// <summary>/// 獲取打折后的價格/// </summary>/// <returns></returns>public double GetPrice(){return abs.DaZhe(price);}}
}

?

<?xml version="1.0" encoding="utf-8" ?>
<configuration><appSettings><add key="Srtiategy" value="StrategyTest.ChildrenDaZhe"></add></appSettings>
</configuration>

?

?

namespace StrategyTest
{class Program{static void Main(string[] args){string txt = ConfigurationManager.AppSettings["Srtiategy"].ToString();//讀取配置文件IAbsStrategy abs = Assembly.Load("StrategyTest").CreateInstance(txt) as IAbsStrategy;//創(chuàng)建實例
MovieTicket move = new MovieTicket(abs);//電影票類 環(huán)境類(構(gòu)造注入)move.Price = 30;//設(shè)置原始價格//move.SetStrategy(abs);//方法注入double myPrice= move.GetPrice();//獲取價格Console.Write("原始價為:"+move.Price);Console.Write("打完折為:" + myPrice);Console.Read();}}
}

結(jié)果: 兒童價: 原始價為:30打完折為:20

如果需要修改為VIP打折? 則在配置文件中修改

這是我的第一篇文章,說實話沒什么技術(shù)含量,寫的也很爛。。。。,設(shè)計模式挺重要的,所以現(xiàn)在復(fù)習(xí)下,馬上畢業(yè)了,希望能有個好的開始,

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/StoneSH/archive/2013/04/04/2999422.html

總結(jié)

以上是生活随笔為你收集整理的策略模式 极其简单的列子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。