using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AdapterPattern { class Program { static void Main(string[] args) { ISquareHandler squareHandler = new RectangleAdapter(new RectangleHandler()); Console.WriteLine("Square edge length:"); int length = int.Parse(Console.ReadLine()); int area = squareHandler.GetArea(length); int perimeter = squareHandler.GetPerimeter(length); Console.WriteLine("Square: {0}x{0}", length); Console.WriteLine("Area: {0}", area); Console.WriteLine("Perimeter: {0}", perimeter); } } public class RectangleHandler { public double Area(double a, double b) { return a * b; } public double Perimeter(double a, double b) { return 2 * a + 2 * b; } } public interface ISquareHandler { int GetArea(int a); int GetPerimeter(int a); } public class RectangleAdapter : ISquareHandler { private RectangleHandler adaptedHandler; public RectangleAdapter(RectangleHandler _adapted) { adaptedHandler = _adapted; } public int GetArea(int a) { int result = (int)adaptedHandler.Area((double)a, (double)a); return result; } public int GetPerimeter(int a) { int result = (int)adaptedHandler.Perimeter((double)a, (double)a); return result; } } }