Working with unshared Flyweights
Unshared flyweights are the black sheep of the Flyweight pattern because they don’t actually help with performance or memory optimization – so why use them? Two reasons: first, they let your client treat unshared and shared flyweight objects under the same interface (which means you could choose to change an unshared object to a concrete flyweight object later without any breaking changes). Second, there are helpful use cases where you need an object or objects that have flyweight children – anytime you run into this situation, these are good candidates for unshared Flyweights.
In the Scripts folder, create a new C# script named Corner
and update its content to match the following code snippet, which adds a new flyweight class (that will not be shared) and draws a center edge tile plus four additional edge tiles to form a cross shape at each corner of the grid:
using System.Collections;
using System.Collections.Generic...