<!-- the line below needs to be an empty line C: (its because kramdown isnt
     that smart and dearly wants an empty line before a heading to be able to
     display it as such, e.g. website) -->

# 设计模式Java版

![Java CI with Maven](https://github.com/iluwatar/java-design-patterns/workflows/Java%20CI%20with%20Maven/badge.svg) [](https://raw.githubusercontent.com/iluwatar/java-design-patterns/master/LICENSE.md)![License MIT](https://img.shields.io/badge/license-MIT-blue.svg) [](https://gitter.im/iluwatar/java-design-patterns?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)![Join the chat at https://gitter.im/iluwatar/java-design-patterns](https://badges.gitter.im/Join%20Chat.svg) [](https://sonarcloud.io/dashboard?id=iluwatar_java-design-patterns)![Sonarcloud Status](https://sonarcloud.io/api/project_badges/measure?project=iluwatar_java-design-patterns&metric=alert_status)

# 介绍

设计模式是程序员在设计应用程序或系统时可以用来解决常见问题的最佳形式化实践。

设计模式可以通过提供经过测试的，经过验证的开发范例来加快开发过程。

重用设计模式有助于防止引起重大问题的细微问题，并且还可以为熟悉模式的程序员和架构师们提高代码可读性。

# 入门

这个站点展示了Java设计模式。该解决方案是由开源社区中经验丰富的程序员和架构师开发的。可以通过他们高级描述或查看源代码来浏览这些设计模式。源代码示例得到了很好的注释，可以视为编程教程，以了解如何实现特定的模式。我们使用最流行的，久经考验的开源Java技术。

在深入学习该材料之前，您应该熟悉各种软件设计原则。

所有设计应尽可能简单。您应该从KISS，YAGNI开始，并做可能可行的最简单的事情。仅在实际可扩展性需要它们时才应引入复杂性和模式。

熟悉这些概念后，您可以通过以下任何一种方法开始深入研究模式

- 使用难度标签： `入门难度` ， `中等难度`和`专家难度` 。
- 使用模式分类`创建型` ，`行为型`和其他类别。
- 搜索特定的模式。一个也找不到？请[在这里](https://github.com/iluwatar/java-design-patterns/issues)反馈新模式。

希望您在本站上找到的面向对象解决方案能够对您的体系结构很有用，并在学习它们的时候能够像我们开发它们一样有趣。

# 如何做出贡献

如果您愿意为该项目做出贡献，则可以在我们的[开发人员Wiki中](https://github.com/iluwatar/java-design-patterns/wiki)找到相关信息。我们将在[Gitter聊天室为](https://gitter.im/iluwatar/java-design-patterns)您提供帮助并回答您的问题。

# 许可证

该项目使用MIT许可证。
