6
A
回答
3
装饰者是在四人帮"Design Patterns"书中描述的原始26种模式之一。他们描述得很好here。
摘要:
装饰:在运行时哪里会导致新的类指数上升
模式是与语言无关 子类一类添加额外的功能。它们描述了面向对象编程中常见问题的解决方案。甚至可以选择,而不用特定的语言来讨论它们。原书中的例子是用C++和Smalltalk编写的。当这本书在1995年首次发布时,Java和C#都不存在。
3
当您在C#中添加装饰器时,就像向类/方法中添加属性一样。将会有一个属性附加到它。
如果你写单元测试你会遇到一个简单的装饰TestMethod
这样的:
[TestMethod]
public void TestMethod1()
{
}
该框架将使用装饰检查方法是在测试集考什么。
您可以在属性here
检查还有一个很好的阅读一篇关于Writing Custom Attributes
装饰不限于装饰的“[]”的形式。这也是一种设计模式,其他人已经提到过。
1
装饰类意味着将功能添加到现有类。例如,你有一个具有唱歌才能的类SingingPerson
。
public class SingingPerson
{
public string Talent = "I can sing";
public string DoTalent()
{
return Talent;
}
}
之后,你决定SingingPerson
类也应该可以跳舞,但不想改变现有的类结构。你所做的是通过创建另一个包含附加功能的类来装饰SingingPerson
类。这个你将要创建的新类需要一个SinginPerson
对象。
public class SingingAndDancingPerson {
SingingPerson person;
public string Talent { get; set; }
public SingingAndDancingPerson(SingingPerson person)
{
this.person = person;
}
public string DoTalent()
{
this.Talent = person.Talent;
this.Talent += " and dance";
return this.Talent;
}
}
当您尝试创建这些类的实例输出将是如下:
SingingPerson person1 = new SingingPerson();
Console.WriteLine("Person 1: " + person1.DoTalent());
SingingAndDancingPerson person2 = new SingingAndDancingPerson(person1);
Console.WriteLine("Person 2: " + person2.DoTalent());
Console.ReadLine();
相关问题
- 1. 在Python中使用参数进行装饰意味着什么?
- 2. matlab中的参数意味着什么?
- 3. BorderLayout的参数意味着什么?
- 4. 什么CIVignette的参数意味着
- 5. 什么是“MOVOU”意味着golang装配
- 6. ESP在装配中意味着什么?
- 7. 什么NPM安装-d --save意味着
- 8. 问号在类型参数绑定中意味着什么?
- 9. 什么是 '自我.__类__.__ missing__' 意味着
- 10. 什么类型在Haskell意味着
- 11. Progress ABL - 什么是“?”在方法参数中意味着什么?
- 12. void **意味着什么
- 13. PREEMPTIVE_XE_DISPATCHER这意味着什么?
- 14. Field.Index.NOT_ANALYZED_NO_NORMS意味着什么
- 15. HttpServletResponse.SC_BAD_REQUEST意味着什么?
- 16. 什么呢##意味着在$ {}
- 17. Solr意味着什么?
- 18. 溢出意味着什么?
- 19. 什么===在PHP意味着
- 20. * | *这意味着什么CSS?
- 21. 什么<?意味着
- 22. 什么。意味着在PHP?
- 23. %是什么〜DP0意味着
- 24. 什么-Dauto意味着
- 25. 什么%*%意味着R中
- 26. AccountExpirationDate意味着什么?
- 27. 这是&意味着什么?
- 28. 什么?意味着iOS的
- 29. $这意味着什么PHP?
- 30. 什么呢JDBC:HSQLDB:hsqlTempFiles意味着
展望呢? http://www.codeproject.com/Articles/479635/UnderstandingplusandplusImpplementingplusDecoratorp –
您可以修饰具有属性的类和类成员。基本上这个属性是派生自类System.Attribute的另一个类,它提供了一些额外的信息。更多信息可以在这里找到:https:// msdn。microsoft.com/en-us/library/aa288454(v=vs.71).aspx – Fabjan
在c#这可能意味着使用属性或修饰器模式。我假设你的意思是属性,因为它们适用于类和参数。 – nozzleman