using System;␍␊ |
using System.Collections.Generic;␍␊ |
using System.Linq;␍␊ |
using System.Text;␍␊ |
␍␊ |
namespace decroatorexample␍␊ |
{␍␊ |
public interface Vechile␍␊ |
{␍␊ |
string Make { get; }␍␊ |
string Model { get; }␍␊ |
double Price { get; }␍␊ |
}␍␊ |
␍␊ |
public class HondaCity : Vechile␍␊ |
{␍␊ |
public string Make␍␊ |
{␍␊ |
get { return "HondaCity"; }␍␊ |
}␍␊ |
␍␊ |
public string Model␍␊ |
{␍␊ |
get { return "CNG"; }␍␊ |
}␍␊ |
␍␊ |
public double Price␍␊ |
{␍␊ |
get { return 10000; }␍␊ |
}␍␊ |
}␍␊ |
␍␊ |
public abstract class VechileDecrorator : Vechile␍␊ |
{␍␊ |
private Vechile _vechile;␍␊ |
␍␊ |
public VechileDecrorator(Vechile veh)␍␊ |
{␍␊ |
_vechile = veh;␍␊ |
}␍␊ |
␍␊ |
public string Make␍␊ |
{␍␊ |
get { return _vechile.Make; }␍␊ |
}␍␊ |
␍␊ |
public string Model␍␊ |
{␍␊ |
get { return _vechile.Model; }␍␊ |
}␍␊ |
␍␊ |
public double Price␍␊ |
{␍␊ |
get { return _vechile.Price; }␍␊ |
}␍␊ |
}␍␊ |
␍␊ |
public class SpecialOffer : VechileDecrorator␍␊ |
{␍␊ |
public SpecialOffer(Vechile vechile)␍␊ |
: base(vechile)␍␊ |
{␍␊ |
␍␊ |
}␍␊ |
␍␊ |
public int DiscountPercentage { get; set; }␍␊ |
public string Offer { get; set; }␍␊ |
␍␊ |
public double Price␍␊ |
{␍␊ |
get␍␊ |
{␍␊ |
double price = base.Price;␍␊ |
double percentage = DiscountPercentage / (double)100;␍␊ |
double res = Math.Round((price * percentage), 2);␍␊ |
return price - res;␍␊ |
}␍␊ |
}␍␊ |
}␍␊ |
class Program␍␊ |
{␍␊ |
static void Main(string[] args)␍␊ |
{␍␊ |
HondaCity car = new HondaCity();␍␊ |
␍␊ |
Console.WriteLine("Honday City base price : {0}", car.Price);␍␊ |
␍␊ |
SpecialOffer offer = new SpecialOffer(car);␍␊ |
offer.DiscountPercentage = 25;␍␊ |
offer.Offer = "25 % discount";␍␊ |
␍␊ |
Console.WriteLine(" Special offer price {0} ", offer.Price);␍␊ |
}␍␊ |
}␍␊ |
}␍␊ |