/// <summary> /// The Lockamitha OpenSafe method picks the lock, /// opens the safe, and then calls ReturnContents /// to get the valuables safely back to the owner. /// </summary> /// <param name="safe"></param> /// <param name="owner"></param> public void OpenSafe(Safe safe, SafeOwner owner) { safe.PickLock(this); string safeContents = safe.Open(Combination); ReturnContents(safeContents, owner); }
static void Main(string[] args) { SafeOwner owner = new SafeOwner(); Safe safe = new Safe(); JewelThief jewelThief = new JewelThief(); jewelThief.OpenSafe(safe, owner); Console.ReadKey(true); }
protected virtual void ReturnContents(string safeContents, SafeOwner owner) { owner.ReceiveContents(safeContents); }
/// <summary> /// JewelThief extends Locsmith and inherits /// the OpenSafe method and Combination /// property, but its ReturnContents method /// steals the jewels instead of returning them. /// </summary> /// <param name="safeContents"></param> /// <param name="owner"></param> protected override void ReturnContents(string safeContents, SafeOwner owner) { stolenJewels = safeContents; Console.WriteLine($"I'm stealing the jewels! I stole: {stolenJewels}"); }