Implementing shallow and deep object copying
Imagine you’re building role-playing game (RPG) where a truly ungodly variety of monsters can pop up in your path and wreak havoc. Your project already uses a base enemy class with properties for the enemy’s name, damage, and battle cry, you’ve already created several enemy subclasses, and there can be multiple instances of each enemy. Your goal is to build a system where new enemies are created without having to initialize new objects, but where you can still configure their properties at runtime. You also need to future-proof your solution by handling any reference properties your enemy classes need later on, which means deep and shallow copying.
Adding a prototype interface
Our first task is creating an interface with cloning methods that all cloneable data structures will eventually implement. The official pattern only has one cloning method, but since we can either shallow or deep clone C# objects, let...