用于确保一个类只有一个实例,并提供全局访问点。
用于创建对象,将对象的创建与使用分离开来,提高代码的可维护性和可扩展性。
用于实现对象之间的消息传递,当一个对象的状态发生改变时,会自动通知其他对象做出相应的反应。
用于管理对象的状态,例如游戏中的角色状态、游戏状态等。
用于实现算法的可替换性,将算法的实现与使用分离开来,提高代码的灵活性和可维护性。
用于动态地给对象添加功能,将功能的添加与对象本身分离开来,提高代码的复用性和可扩展性。
用于将请求封装成对象,以便于对请求进行排队、记录、撤销等操作。