Exercises
Before diving into exercises for each design pattern, take a moment to add the os and pathlib calls to implement the methods for the File and Folder objects in the section on The Composite pattern. The copy() method on File will need to read and write the bytes of a file. The copy() method on Folder is quite a bit more complicated, as you first have to duplicate the folder, and then recursively copy each of its children to the new location. The examples we provided update the internal data structure, but don't apply changes to the operating system. Be careful about testing this in isolated directories. You don't want to accidentally destroy important files.
Now, as in the previous chapter, look at the patterns we've discussed and consider ideal places where you might implement them. You may want to apply the Adapter pattern to existing code, as it is usually applicable when interfacing with existing...