"हेड फर्स्ट डिजाइन पैटर्न" पुस्तक (जावा में लिखा) में कोड से सी # में डेकोरेटर पैटर्न लागू करने के लिए कोशिश कर रहा है।डेकोरेटर पैटर्न कार्यान्वयन
मैं बस के साथ सी # शुरू कर रहा हूँ और इसलिए अभी भी वाक्य रचना करने के लिए नया हूँ, इसलिए मुझे यकीन है कि मैं क्यों कोड की टिप्पणी की रेखा से नीचे काम करने के लिए नहीं मिल सकता है नहीं कर रहा हूँ।
यहाँ पहली सार-आधार वर्ग है और डेकोरेटर पैटर्न में अपनी व्युत्पन्न वर्ग:
using System;
public abstract class Beverage
{
private String m_description;
// get a description of the beverage
public virtual String Description { get { return m_description; } }
// calculate cost of the beverage
public abstract double Cost();
}
// HouseBlend coffee implements Beverage
public class HouseBlend : Beverage
{
// Constructor
public HouseBlend() { m_description = "House Blend"; }
// calculate base cost of House Blend
public override double Cost() { return 0.89; }
}
// DarkRoast coffee implements Beverage
public class DarkRoast : Beverage
{
// Constructor
public DarkRoast() { m_description = "Dark Roast"; }
// calculate base cost of Dark Roast
public override double Cost() { return 1.00; }
}
// Espresso coffee implements Beverage
public class Espresso : Beverage
{
// Constructor
public Espresso() { m_description = "Espresso"; }
// calculate base cost of Espresso
public override double Cost() { return 1.99; }
}
अपमानजनक कोड मोचा वर्ग की विधि मूल्य() में है:
using System;
// abstract base class CondimentDecorator is-a Beverage
public abstract class CondimentDecorator : Beverage {}
// Mocha implements the CondimentDecorater
public class Mocha : CondimentDecorator
{
// Condiment decorator has-a Beverage (recursion!)
private Beverage m_beverage;
// Constructor binds the object passed to member var
public Mocha(Beverage beverage)
{
this.m_beverage = beverage;
}
// getter implements abstract class Description
public override String Description
{
get
{
return m_beverage.Description + ", Mocha";
}
}
// get the Cost of the condiment plus the base-cost
// of the original beverage
public new double Cost() // ERROR: 'Mocha.Cost()' hides inherited
{ // member 'Beverage.Cost()'
return 0.20 + m_beverage.Cost();
}
}
FYI हालांकि किताब जावा [पुस्तक की वेबसाइट] का उपयोग करता है (http://headfirstlabs.com/books/hfdp/) [सी # में नमूना कोड] (करने के लिए लिंक http://www.msquaredweb.com/ DesignPatterns/HeadFirstDesignPatternsInCSharp.zip) और सी ++। –
जानना अच्छा है। मैं इसे – dtg