decorator pattern vs adapter pattern - C#