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;
 }
示例#5
0
 public PackageForShipping(IPackagedItem item)
 {
     this.Item = item;
 }
 public CDCasePack(IPackagedItem item)
 {
     this.Item = item;
 }