using System.Collections.Generic;
public string FirstName { get; set; }
public string LastName { get; set; }
public string CubeAddress { get; set; }
public string PhoneExtention { get; set; }
public string MobilePhone { get; set; }
Person Find(string firstName, string lastName);
private static readonly List<Person> StaffList = new List<Person>();
private class ManagementDepartment : IPerson
public ManagementDepartment()
Console.WriteLine("ManagementDepartment: Initialized");
public void Add(Person person)
public Person Find(string firstName, string lastName)
return StaffList.FirstOrDefault(_ => _.FirstName == firstName && _.LastName == lastName);
public class ProxyDepartment : IPerson
private ManagementDepartment _department;
Console.WriteLine("ProxyDepartment: Initialized");
public void Add(Person person)
_department = new ManagementDepartment();
Console.WriteLine("Data Added from Proxy Client = {0} {1}", person.FirstName, person.LastName);
public Person Find(string firstName, string lastName)
return _department.Find(firstName, lastName);
_department = new ManagementDepartment();
return _department.Find(firstName, lastName);
public static void Main()
ProxyDepartment proxy = new ProxyDepartment();
FirstName = "FirstName 1",
FirstName = "FirstName 2",