using System.Collections.Generic;
public class RealEbook: IEbook
public RealEbook(string filename)
this.filename = filename;
Console.WriteLine("loading file");
Console.WriteLine("showing file");
public class EbookProxy: IEbook
public EbookProxy(string filename)
this.filename = filename;
ebook = new RealEbook(filename);
private Dictionary<string, IEbook> ebooks = new Dictionary<string, IEbook>();
public void Add(IEbook ebook)
ebooks.Add(ebook.Filename, ebook);
public void OpenEbook(string filename)
var ebook = ebooks[filename];
public static void Main()
var library = new Library();
string[] filenames = {"a", "b", "c"};
foreach(var filename in filenames)
library.Add(new EbookProxy(filename));