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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

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

生活经验

策略模式 极其简单的列子

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

第一篇博客

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

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

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

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

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

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

1.要滿(mǎn)足開(kāi)閉原則 二話(huà)不說(shuō)先定義抽象類(lèi)或接口

namespace StrategyTest
{/// <summary>/// 抽象策略類(lèi)  (折扣類(lèi))/// </summary>public  interface IAbsStrategy{/// <summary>/// 打折 抽象方法(用拼音。。)/// </summary>/// <param name="price">價(jià)格</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("兒童價(jià):");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é)生價(jià):");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價(jià)格:");Console.Write("積分增加 +1  \r\n");//積分這里意思一下。。。return price * 0.5;}}
}

?

namespace StrategyTest
{/// <summary>/// 電影票 環(huán)境類(lèi)/// 提供兩個(gè)注入方法(注入為抽象類(lèi)) 1.構(gòu)造函數(shù)注入 2.方法注入/// </summary>public class MovieTicket{private IAbsStrategy abs;//抽象打折private double price;//價(jià)格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>/// 獲取打折后的價(jià)格/// </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)建實(shí)例
MovieTicket move = new MovieTicket(abs);//電影票類(lèi) 環(huán)境類(lèi)(構(gòu)造注入)move.Price = 30;//設(shè)置原始價(jià)格//move.SetStrategy(abs);//方法注入double myPrice= move.GetPrice();//獲取價(jià)格Console.Write("原始價(jià)為:"+move.Price);Console.Write("打完折為:" + myPrice);Console.Read();}}
}

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

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

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

?

?

?

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

總結(jié)

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

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