सी # (न पैटर्न) प्रतिनिधि उपयोगी हो सकता है जब आप delegate pattern कार्यान्वित कर रहे हैं बस अपने परिवर्तन के साथ विकिपीडिया से इस प्रतिनिधि पैटर्न कार्यान्वयन को देखो:
//NOTE: this is just a sample, not a suggestion to do it in such way
public interface I
{
void F();
void G();
}
public static class A
{
public static void F() { System.Console.WriteLine("A: doing F()"); }
public static void G() { System.Console.WriteLine("A: doing G()"); }
}
public static class B
{
public static void F() { System.Console.WriteLine("B: doing F()"); }
public static void G() { System.Console.WriteLine("B: doing G()"); }
}
public class C : I
{
// delegation
Action iF = A.F;
Action iG = A.G;
public void F() { iF(); }
public void G() { iG(); }
// normal attributes
public void ToA() { iF = A.F; iG = A.G; }
public void ToB() { iF = B.F; iG = B.G; }
}
public class Program
{
public static void Main()
{
C c = new C();
c.F(); // output: A: doing F()
c.G(); // output: A: doing G()
c.ToB();
c.F(); // output: B: doing F()
c.G(); // output: B: doing G()
}
}
फिर प्रतिनिधि यहाँ उपयोगी हो सकता है, लेकिन यह पेश नहीं किया गया था। आपको इसे निम्न स्तर के निर्माण के बजाय पैटर्न के रूप में देखना चाहिए। बस this article को देखो, कभी यह भी visitor pattern लागू करने के लिए आप मदद कर सकता है - - events साथ जोड़ी में यह publisher/subscriber(observer) pattern को लागू करने के लिए इस्तेमाल किया जा सकता है इस सक्रिय रूप से LINQ में प्रयोग किया जाता है:
public void Linq1()
{
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
// n => n < 5 is lambda function, creates a delegate here
var lowNums = numbers.Where(n => n < 5);
Console.WriteLine("Numbers < 5:");
foreach (var x in lowNums)
{
Console.WriteLine(x);
}
}
संक्षेप में: एक भाषा प्रतिनिधि स्वयं पैटर्न नहीं है, यह आपको first class objects के रूप में कार्य करने की अनुमति देता है।
स्रोत
2012-06-13 07:21:35
बहुत बहुत धन्यवाद, बहुत स्पष्ट – R4j