public void SimpleMultiUseDecoration() { var needs = new Needs(); needs.Add <IFacility, BasicFacility>(); Assert.AreEqual(1, needs.Get <IFacility>().Facilitate()); needs.Decorate <IFacility, AdvancedFacility>(); Assert.AreEqual(2, needs.Get <IFacility>().Facilitate()); // Decorator can be re-applied/re-wrapped multiple times needs.Decorate <IFacility, AdvancedFacility>(); Assert.AreEqual(3, needs.Get <IFacility>().Facilitate()); }