human: 命名软件工程设计模式并给出其定义。
 bot: 软件工程设计模式是一种抽象的、通用的解决问题的方法或模板。它们是从实际问题中抽象出来的，可以用于解决类似的问题。设计模式不是具体的实现，而是一种思想或者指导原则。它们可以帮助开发人员更好地理解问题的本质，并提供一种结构化的方法来解决问题。设计模式可以提高软件的可维护性、可扩展性和可重用性，同时也可以促进团队合作和代码的可读性。常见的软件工程设计模式包括单例模式、工厂模式、观察者模式等。通过使用这些设计模式，开发人员可以更好地组织和管理代码，提高软件的质量和效率。