public IPackagedItem ReceivePackage(IPackagedItem package) { Console.WriteLine( $"Received a package of size {package.GetDimensions()}." ); Console.WriteLine( $"The contained item is {package.Item.GetDimensions()}.\n" + $"It seems they added a {package.Item.GetType().Name} that I didn't order..." ); return(package.Item); }
protected override void Implementation() { Book bareBook = new Book("Design Patterns", new Size(188 * mm, 239 * mm, 28 * mm)); IPackagedItem product = new TwoPack(bareBook); BookHandler dispatcher = new BookHandler(); IPackagedItem dispatchedProduct = dispatcher.AddAdvertisingMaterialAndShip(product); BookHandler buyer = new BookHandler(); buyer.ReceivePackage(dispatchedProduct); }
public IPackagedItem AddAdvertisingMaterialAndShip(IPackagedItem item) { IPackagedItem combinedItem = new CDCasePack(item); Console.WriteLine( $"Shipping {combinedItem.Item.GetType().Name} of size " + $"{combinedItem.Item.GetDimensions()} to the customer." ); IPackagedItem package = new PackageForShipping(combinedItem); Console.WriteLine( $"The size of the complete package is {package.GetDimensions()}." ); return(package); }
/// <summary> /// Constructs a two-pack of a given book. /// </summary> /// <param name="book"></param> public TwoPack(Book book) : base(book) { this.Item = book; }
public PackageForShipping(IPackagedItem item) { this.Item = item; }
public CDCasePack(IPackagedItem item) { this.Item = item; }