public static void Main() { var greenChild1 = new GreenChild("child1"); var greenParent1 = new GreenParent("parent1", greenChild1); var greenParent2 = new GreenParent("parent2", greenChild1); var redParent1 = greenParent1.MakeFacade(); var redParent2 = greenParent2.MakeFacade(); Console.WriteLine(redParent1.Value); // parent1 Console.WriteLine(redParent1.Child.Parent.Value); // parent1 ! Console.WriteLine(redParent2.Value); // parent2 Console.WriteLine(redParent2.Child.Parent.Value); // parent2 ! // See how that goes? RedParent1 and RedParent2 disagree on what the // parent of greenChild1 is, **but they are self-consistent**. They // always report that the parent of their child is themselves. }
public GreenParent(string value, GreenChild child) : base(value) { this.child = child; }