Skip to content

Instantly share code, notes, and snippets.

public class SilentGigantosaurusDecorator : IGigantosaurus
{
protected readonly IGigantosaurus gigantosaurus;
public SilentGigantosaurusDecorator(IGigantosaurus gigantosaurus)
{
this.gigantosaurus = gigantosaurus;
}
public string Roar()
public static void AdapterExample()
{
var triceratops = new Triceratops();
var child = ChildCreator.CreateChild(new TriceratopsToMammalAdapter(triceratops));
child.Cry();
}
namespace DesignPatterns.Adapter
{
public interface IChild
{
void Cry();
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace DesignPatterns.Adapter
{
public class TriceratopsToMammalAdapter : IMammal
{
private readonly Triceratops triceratops;
namespace DesignPatterns.Adapter
{
public class TriceratopsEgg
{
public IChild Hatch()
{
return new TriceratopsChild();
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace DesignPatterns.Adapter
{
public interface IEgg
{
IChild Hatch();
}
using System;
using System.Collections.Generic;
using System.Text;
namespace DesignPatterns.Adapter
{
public class Triceratops
{
public TriceratopsEgg LayEgg()
{
using System;
using System.Collections.Generic;
using System.Text;
namespace DesignPatterns.Adapter
{
public interface IMammal
{
IChild GiveBirth();
}
using System;
using System.Collections.Generic;
using System.Text;
namespace DesignPatterns.Adapter
{
public static class ChildCreator
{
public static IChild CreateChild(IMammal mammal)
{
public static void DecoratorExample()
{
var gigantosaurus = new Gigantosaurus();
Console.WriteLine(gigantosaurus.Roar());
var loudGigantosaurus = new LoudGigantosarusDecorator(gigantosaurus);
var extraLoudGigantosaurus = new ExtraLoudGigantosaurusDecorator(loudGigantosaurus);
Console.WriteLine(extraLoudGigantosaurus.Roar());