private static void ShowDecorator() { Console.WriteLine("================================================"); Console.WriteLine("Pattern code (Decorator):"); ConcreteComponent c = new ConcreteComponent(); ConcreteDecoratorA d1 = new ConcreteDecoratorA(); ConcreteDecoratorB d2 = new ConcreteDecoratorB(); d1.SetComponent(c); d2.SetComponent(d1); d2.Operation(); Console.WriteLine("\nReal code (Decorator):"); Pizza pizza1 = new ItalianPizza(); pizza1 = new TomatoPizza(pizza1); // итальянская пицца с томатами Console.WriteLine("Название: {0}", pizza1.Name); Console.WriteLine("Цена: {0}", pizza1.GetCost()); Pizza pizza2 = new ItalianPizza(); pizza2 = new CheesePizza(pizza2);// итальянская пиццы с сыром Console.WriteLine("Название: {0}", pizza2.Name); Console.WriteLine("Цена: {0}", pizza2.GetCost()); Pizza pizza3 = new BulgerianPizza(); pizza3 = new TomatoPizza(pizza3); pizza3 = new CheesePizza(pizza3);// болгарская пиццы с томатами и сыром Console.WriteLine("Название: {0}", pizza3.Name); Console.WriteLine("Цена: {0}", pizza3.GetCost()); }
static void DecoratorTester() { #region sample 1 var c = new ConcreteComponent(); var d1 = new ConcreteDecoratorA(); var d2 = new ConcreteDecoratorB(); // Link decorators d1.SetComponent(c); d2.SetComponent(d1); d2.Operation(); #endregion #region sample 2 var book = new Book("Worley", "Inside ASP.NET", 10); book.Display(); // Create video var video = new Video("Spielberg", "Jaws", 23, 92); video.Display(); // Make video borrowable, then borrow and display Console.WriteLine("\nMaking video borrowable:"); var borrowvideo = new Borrowable(video); borrowvideo.BorrowItem("Customer #1"); borrowvideo.BorrowItem("Customer #2"); borrowvideo.Display(); #endregion }
static bool TestDecoratorPattern() { Console.WriteLine("TESTING THE DECORATOR DESIGN PATTERN: "); ConcreteComponent comp = new ConcreteComponent(); ConcreteDecoratorA d1 = new ConcreteDecoratorA(comp); ConcreteDecoratorB d2 = new ConcreteDecoratorB(d1); comp.Operation(); //Output: //Operation from ConcreteComponent d1.Operation(); //Output: //Operation from ConcreteComponent //(AddedBehaviour A) + Operation from ConcreteDecoratorA d2.Operation(); //Output: //Operation from ConcreteComponent //(AddedBehaviour A) + Operation from ConcreteDecoratorA //(AddedBehaviour B) + Operation from ConcreteDecoratorB return(true); }
public static void Main(string[] args) { Component obj = new ConcreteDecoratorB(new ConcreteDecoratorA(new ConcreteComponent())); string result = obj.operation(); Console.WriteLine(result); }
public void AddBehaviorTest() { Component component = new ConcreteComponent(); component = new ConcreteDecoratorB(component); Assert.That(() => component.Operation(), Throws.Exception.With.Message.EqualTo("Operation from object of ConcreteDecoratorB type")); }
static void Main() { ConcreteComponent c = new ConcreteComponent(); ConcreteDecoratorA d1 = new ConcreteDecoratorA(c); ConcreteDecoratorB d2 = new ConcreteDecoratorB(d1); d2.Operation(); Console.ReadKey(); }
static void Main() { Component component = new ConcreteComponent(); Decorator decoratorA = new ConcreteDecoratorA(); Decorator decoratorB = new ConcreteDecoratorB(); decoratorA.Component = component; decoratorB.Component = decoratorA; decoratorB.Operation(); }
public static void Main(string[] args) { ConcreteComponent c = new ConcreteComponent(); ConcreteDecoratorA d1 = new ConcreteDecoratorA(); ConcreteDecoratorB d2 = new ConcreteDecoratorB(); d1.SetComponent(c); d2.SetComponent(d1); d2.Operation(); }
public static void TestConcreteDecorators() { var c = new ConcreteComponent(); var d1 = new ConcreteDecoratorA(); var d2 = new ConcreteDecoratorB(); d1.SetComponent(c); d2.SetComponent(d1); StringAssert.AreEqualIgnoringCase(d2.Operation(true), "ConcreteDecoratorB.Operation()ConcreteDecoratorA.Operation()ConcreteComponent.Operation()"); }
public static void DecoratorPattern() { ConcreteComponent c = new ConcreteComponent(); ConcreteDecoratorA d1 = new ConcreteDecoratorA(); ConcreteDecoratorB d2 = new ConcreteDecoratorB(); d1.SetComponent(c); d2.SetComponent(d1); d2.Operation(); Console.Read(); }
public static void TestDecorator() { IComponent component = new ConcreteComponent(); Console.WriteLine(component.Operation()); Decorator decorator = new ConcreteDecoratorA(component); Console.WriteLine(decorator.Operation()); decorator = new ConcreteDecoratorB(decorator); Console.WriteLine(decorator.Operation()); }
public void TestDecorator() { ConcreteComponent c = new ConcreteComponent(); ConcreteDecoratorA d1 = new ConcreteDecoratorA(); ConcreteDecoratorB d2 = new ConcreteDecoratorB(); // Link decorators d1.SetComponent(c); d2.SetComponent(d1); d2.Operation(); }
static void Main(string[] args) { ConcreteComponent TextView = new ConcreteComponent(); ConcreteDecoratorA ScrollDecorator = new ConcreteDecoratorA(); ConcreteDecoratorB BorderDecorator = new ConcreteDecoratorB(); ScrollDecorator.SetComponent(TextView); BorderDecorator.SetComponent(ScrollDecorator); BorderDecorator.Operation(); Console.ReadLine(); }
static void Main(string[] args) { ConcreteComponent component = new ConcreteComponent(); ConcreteDecoratorA da = new ConcreteDecoratorA(); ConcreteDecoratorB db = new ConcreteDecoratorB(); da.SetComponent(component); db.SetComponent(da); db.Operation(); Console.ReadKey(true); }
static void Main(string[] args) { ConcreteComponent concreteComponent = new ConcreteComponent(); ConcreteDecoratorA concreteDecoratorA = new ConcreteDecoratorA(); ConcreteDecoratorB concreteDecoratorB = new ConcreteDecoratorB(); concreteDecoratorA.Component = concreteComponent; concreteDecoratorB.Component = concreteDecoratorA; concreteDecoratorB.Operation(); Console.Read(); }
public static void DecoratorStructural() { // Create ConcreteComponent and two Decorators ConcreteComponent c = new ConcreteComponent(); ConcreteDecoratorA d1 = new ConcreteDecoratorA(); ConcreteDecoratorB d2 = new ConcreteDecoratorB(); // Link decorators d1.SetComponent(c); d2.SetComponent(d1); d2.Operation(); }
static void Main() { { ConcreteComponent c = new ConcreteComponent(); ConcreteDecoratorA d1 = new ConcreteDecoratorA(); ConcreteDecoratorB d2 = new ConcreteDecoratorB(); d1.SetComponent(c); d2.SetComponent(d1); d2.Operation(); } }
static void Main() { // Create ConcreteComponent and two Decorators ConcreteComponent c = new ConcreteComponent(); ConcreteDecoratorA d1 = new ConcreteDecoratorA(); ConcreteDecoratorB d2 = new ConcreteDecoratorB(); // Link decorators d1.SetComponent(c); d2.SetComponent(d1); d2.Operation(); Console.ReadKey(); }
public Client() { ConcreteComponent concreteComponent = new ConcreteComponent(); ConcreteDecoratorA concreteDecoratorA = new ConcreteDecoratorA(); ConcreteDecoratorB concreteDecoratorB = new ConcreteDecoratorB(); concreteDecoratorA.SetComponent(concreteComponent); concreteDecoratorB.SetComponent(concreteDecoratorA); concreteDecoratorB.Operation(); Console.Read(); }
public void DecoratorTest() { var simple = new ConcreteComponent(); Client.ClientCode(simple).Should().Be(StructuralText.ConcreteComponent); // Note how decorators can wrap not only simple components but the other decorators as well. var decorator1 = new ConcreteDecoratorA(simple); var decorator2 = new ConcreteDecoratorB(decorator1); Client.ClientCode(decorator2).Should().Be(StructuralText.ConcreteDecoratorB + StructuralText.ConcreteDecoratorA + StructuralText.ConcreteComponent); }
static void Main(string[] args) { Component component = new ConcreteComponent(); Abstraction.Decorator decoratorA = new ConcreteDecoratorA(); Abstraction.Decorator decoratorB = new ConcreteDecoratorB(); decoratorA.Component = component; decoratorB.Component = decoratorA; decoratorB.Operation(); Console.ReadKey(); }
private static void Test() { var c = new ConcreteComponent(); var d1 = new ConcreteDecoratorA(); var d2 = new ConcreteDecoratorB(); //Tutaj widac dekoracje d1.SetComponent(c); d2.SetComponent(d1); d2.Operation(); Console.ReadKey(); }
public static void Create() { var c = new ConcreteComponent(); var d1 = new ConcreteDecoratorA(); var d2 = new ConcreteDecoratorB(); // Link decorators. d1.Component = c; d2.Component = d1; // Do the operation. d2.Operation(); }
private static void Test1() { // 首先实例化具体对象ConcreateComponent 【具体组合】 ConcreateComponent c = new ConcreateComponent(); // 然后实例化具体装饰类 ConcreteDecoratorA d1 = new ConcreteDecoratorA(); ConcreteDecoratorB d2 = new ConcreteDecoratorB(); // 开始包装 d1.SetComponent(c); d2.SetComponent(d1); d2.Operation(); }
/// <summary> /// Execute decorator design pattern example /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Decorator_OnClick(object sender, RoutedEventArgs e) { var simpleComponent = new ConcreteComponent(); DesignPatternsLog.Text += $"Decorator@ I get a simple component: {simpleComponent.Operation()}"; DesignPatternsLog.Text += $"{Environment.NewLine}"; // Note how decorators can wrap not only simple components // but the other decorators as well. var decoratorA = new ConcreteDecoratorA(simpleComponent); var decoratorB = new ConcreteDecoratorB(decoratorA); DesignPatternsLog.Text += $"Decorator@ Now I've got a decorated component: {decoratorB.Operation()}"; DesignPatternsLog.Text += $"{Environment.NewLine}"; }
static void Run() { //实例化实现类 ConcreteComponent concrete = new ConcreteComponent(); //实例化装饰类 ConcreteDecoratorA decoratorA = new ConcreteDecoratorA(); ConcreteDecoratorB decoratorB = new ConcreteDecoratorB(); //用装饰类装饰实现类 decoratorA.SetComponent(concrete); decoratorB.SetComponent(decoratorA); // decoratorB.Operation(); }
// "Component" public void TestDecoratorPattern() { // Create ConcreteComponent and two Decorators var c = new ConcreteComponent(); var d1 = new ConcreteDecoratorA(); var d2 = new ConcreteDecoratorB(); // Link decorators d1.SetComponent(c); d2.SetComponent(d1); d2.Operation(); // Wait for user Console.Read(); }
// void UnitTest () { // 物件 ConcreteComponent theComponent = new ConcreteComponent(); // 增加Decorator ConcreteDecoratorA theDecoratorA = new ConcreteDecoratorA( theComponent ); theDecoratorA.Operator(); ConcreteDecoratorB theDecoratorB = new ConcreteDecoratorB( theComponent ); theDecoratorB.Operator(); // 再增加一層 ConcreteDecoratorB theDecoratorB2 = new ConcreteDecoratorB( theDecoratorA ); theDecoratorB2.Operator(); }
static void Main(string[] args) { Client client = new Client(); var simple = new ConcreteComponent(); Console.WriteLine("Client: I get a sumple component:"); client.ClientCode(simple); Console.WriteLine(); ConcreteDecoratorA d1 = new ConcreteDecoratorA(simple); ConcreteDecoratorB d2 = new ConcreteDecoratorB(d1); Console.WriteLine("Client: Now I get a decorated component:"); client.ClientCode(d2); }
private static void DoDecorator() { DecoratorClient client = new DecoratorClient(); ConcreteComponent simple = new ConcreteComponent(); Console.WriteLine("Client: I get a simple component:"); client.ClientCode(simple); Console.WriteLine(); ConcreteDecoratorA decorator1 = new ConcreteDecoratorA(simple); ConcreteDecoratorB decorator2 = new ConcreteDecoratorB(decorator1); Console.WriteLine("Client: Now I've got decorated component"); client.ClientCode(decorator2); }
static void Main(string[] args) { Component component = new ConcreteComponent(); //第一次修饰 component = new ConcreteDecoratorA(component); //第二次装饰 component = new ConcreteDecoratorB(component); component.Operation(); //Person p = new Person("sun"); //Shirt t = new Shirt(); //t.Decorate(p); //t.Show(); Console.ReadLine(); }
//Декоратор або Wrapper / Обгортка (Decorator) public Run Decorator() { Console.WriteLine("\nDecorator:"); // Create ConcreteComponent and two Decorators ConcreteComponent c = new ConcreteComponent(); ConcreteDecoratorA d1 = new ConcreteDecoratorA(); ConcreteDecoratorB d2 = new ConcreteDecoratorB(); // Link decorators d1.SetComponent(c); d2.SetComponent(d1); d2.Operation(); return(this); }
public void Test1() { Client client = new Client(); var simple = new ConcreteComponent(); var resultS = client.ClientCode(simple); Assert.Equal("RESULT: ConcreteComponent", resultS); ConcreteDecoratorA decorator1 = new ConcreteDecoratorA(simple); ConcreteDecoratorB decorator2 = new ConcreteDecoratorB(decorator1); var resultD2 = client.ClientCode(decorator2); Assert.Equal("RESULT: ConcreteDecoratorB(ConcreteDecoratorA(ConcreteComponent))", resultD2); }
static void Main() { // Create ConcreteComponent and two Decorators ConcreteComponent c = new ConcreteComponent(); ConcreteDecoratorA d1 = new ConcreteDecoratorA(); ConcreteDecoratorB d2 = new ConcreteDecoratorB(); // Link decorators d1.SetComponent(c); d2.SetComponent(d1); d2.Operation(); // Wait for user Console.Read(); }
public static void Main( string[] args ) { // Create ConcreteComponent and two Decorators ConcreteComponent c = new ConcreteComponent(); ConcreteDecoratorA d1 = new ConcreteDecoratorA(); ConcreteDecoratorB d2 = new ConcreteDecoratorB(); // Link decorators d1.SetComponent( c ); d2.SetComponent( d1 ); d2.Operation(); }