One of the other advantages of the decorator pattern is that wrapped objects can retain the type of the original object. As a result, you can use original and wrapped objects interchangeably, which is a significant advantage when your goal is to write flexible code. In this manner, you can easily extend the behavior of a particular object without modifying the original code.

In this snippet we have a class hierarchy with a SimpleMessage at the top. The SimpleMessage class has a constructor that accepts a content string as well as two methods: GetMessage; and, PrintMessage. Down the hierarchy we have three subclasses: ExcitedMessage; QuizzicalMessage; and, ExcitedAndQuizzicalMessage. The only difference in the subclasses is that they override the SimpleMessage constructor to change the content string and append various exclamations. When we instantiate various message objects, using the same content string, and iterate over them, each has their own unique output.
Peter Heller is the best-selling author of The Dog Stars. He holds an MFA from the Iowa Writers’ Workshop in both fiction and poetry. An award-winning adventure writer and a longtime contributor to NPR, Heller is a contributing editor at Outside magazine, Men’s Journal, and National Geographic Adventure, and a regular contributor to Bloomberg Businessweek. He is also the author of several nonfiction books, including Kook, The Whale Warriors, and Hell or High Water: Surviving Tibet’s Tsangpo River. He lives in Denver, Colorado.
Acrylic paint is fast drying paint containing pigment suspension in acrylic polymer emulsion. Acrylic paints can be diluted with water, but become water-resistant when dry. Depending on how much the paint is diluted (with water) or modified with acrylic gels, media, or pastes, the finished acrylic painting can resemble a watercolor or an oil painting, or have its own unique characteristics not attainable with other media. The main practical difference between most acrylics and oil paints is the inherent drying time. Oils allow for more time to blend colors and apply even glazes over under-paintings. This slow drying aspect of oil can be seen as an advantage for certain techniques, but may also impede the artist's ability to work quickly.
Where The Dog Stars established Heller as a writer with a consistent, wickedly humorous voice, a formidable scene setter, and writer with philosophical underpinnings, this second novel shows those strengths fraying a bit. He’s adopting a voice here that isn’t always his own; he toys with the sentence structures of Hemingway and Raymond Carver, and the effect is a bit clumsy. However in the book’s second half he returns to vestiges of his first novel’s voice, and this is where his story becomes compelling.
Component Interface: The component interface is an abstraction describing the behaviors of the components that you will eventually use in your program. Any objects that will use these components will do so through the interface, meaning that they are principally concerned with the abstraction (not the actual object). This is what allows both objects and wrapped objects to be considered to be the same type.
Thanks to enhanced support for multi-core processors and CPUs that use AVX2 extensions and extensive code optimizations, this is the fastest version of Painter yet. A huge selection of brushes are noticeably faster — some as much as twice as fast. You can also take advantage of faster document rendering when zooming, panning and rotating — up to 50% faster.