Posted By

qrist0ph on 09/26/08


Tagged

pattern


Versions (?)

Who likes this?

3 people have marked this snippet as a favorite

qrist0ph
umang_nine
khouser


Adapter Pattern


 / Published in: C#
 

  1. public partial class Window1 : Window
  2. {
  3. // Der Algorithmus welche die Zielklasse verwendet - Schon vorhanden
  4. public void printChildren(Node n)
  5. {
  6. Console.WriteLine(n.Name);
  7. foreach (Node item in n.getChildren())
  8. {
  9. printChildren(item);
  10. }
  11. }
  12.  
  13. // An dieser Stelle wird der Algorithmus wiederverwendet - Selbst erstellt
  14. public void test()
  15. {
  16. Mensch m = new Mensch().addFreund(new Mensch()).addFreund(new Mensch()).addFreund(new Mensch());
  17. printChildren(new MenschAufNodeAdaptor(m));
  18. }
  19. }
  20.  
  21.  
  22. //Die Ziel Klasse - schon vorhanden
  23. public interface Node
  24. {
  25. List<Node> getChildren();
  26. String Name { get;}
  27. }
  28.  
  29. // Die Adaptee Klasse - evtl selbst erstellt
  30. public class Mensch
  31. {
  32. List<Mensch> _freunde = new List<Mensch>();
  33. public List<Mensch> getFreunde()
  34. {
  35. return _freunde;
  36. }
  37. public Mensch addFreund(Mensch m)
  38. {
  39. _freunde.Add(m);
  40. return this;
  41. }
  42. }
  43.  
  44. // Die Adaptor Klasse - Muss selbst erstellt werden!
  45. public class MenschAufNodeAdaptor : Node
  46. {
  47. private Mensch _mensch;
  48. public MenschAufNodeAdaptor(Mensch m)
  49. {
  50. _mensch = m;
  51. }
  52.  
  53. List<Node> Node.getChildren()
  54. {
  55. List<Node> liste = new List<Node>();
  56. foreach (Mensch item in _mensch.getFreunde())
  57. {
  58. liste.Add(new MenschAufNodeAdaptor(item));
  59. }
  60. return liste;
  61. }
  62.  
  63.  
  64. string Node.Name
  65. {
  66. get{return "Ein MenschAufNodeAdaptor";}
  67. }
  68. }

Report this snippet  

You need to login to post a comment.