using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StrategySample
{
class Program
{
static void Main(string[] args)
{
Ticket mticket = new Ticket(100);
Console.WriteLine("当前价格" + mticket.Price);
Discount mdis= new StudentDiscount();
mticket.SetDiscount(mdis);
Console.WriteLine("当前价格" + mticket.Price);
Console.Read();
}
}
class Ticket
{
private double price;
private Discount discount;
public Ticket(double price)
{ this.price = price; }
public void SetDiscount(Discount discount)
{
this.discount = discount;
}
public double Price
{
get {if (discount != null)
return discount.Caculate(this.price);
else
return this.price;
}
set { price = value; }
}
}
interface Discount
{
double Caculate(double price);
}
class StudentDiscount:Discount
{
private const double DISCOUNT = 0.5;
public double Caculate(double price)
{
Console.WriteLine("学生票");
return price * DISCOUNT;
}
}
class VIPDiscount : Discount
{
private const double DISCOUNT = 0.8;
public double Caculate(double price)
{
Console.WriteLine("VIP票");
return price * DISCOUNT;
}
}
}