什么是约定大于配置?

举报
JavaEdge 发表于 2021/09/07 00:33:46 2021/09/07
【摘要】 约定大于配置,convention over configuration,也称按约定编程,一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。 本质是说,开发人员仅需规...

约定大于配置,convention over configuration,也称按约定编程,一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。

本质是说,开发人员仅需规定应用中不符约定的部分。例如,如果模型中有个名为Sale的类,那么数据库中对应的表就会默认命名为sales。只有在偏离这一约定时,例如将该表命名为"products_sold",才需写有关这个名字的配置。

如果所用工具的约定与期待相符,便可省去配置;反之,可以配置来达到所期待的方式。

动机

设计不好的框架通常需要多个配置文件,每一个都有许多设置。这些配置文件为每一个项目提供像是URL,或是将类映射到数据库表的各种信息。大量包含太多参数的配置文件通常是过度复杂的应用设计(代码坏味道)。

例如,在知名的Java对象关系映射框架Hibernate的早期版本中,将类及其属性映射到数据库上需要是在XML文件中的描述,其中大部分信息都应能够按照约定得到,如将类映射到同名的数据库表,将属性分别映射到表上的字段。后续的版本抛弃了XML配置文件,而是使用这些恰当的约定,对于不符合这些约定的情形,可以使用Java 标注来说明(参见下面提供的JavaBeans规范)。

使用

许多新的框架使用了约定优于配置的方法,包括:Spring,Ruby on Rails,Maven,ASP.NET MVC。

这是一个古老的概念,甚至在Java类库中也可以找出这一概念的踪迹。例如,JavaBean规范非常多的依赖这一概念。
下面摘录JavaBeans 1.1版规范的一段:
一般来说,我们不希望造出一个硕大无比的java.beans.everything类用来派生其他类,而是希望JavaBeans运行时为一般的对象提供缺省的行为特征,但是允许对象通过继承特定的java.beans.something接口来覆盖缺省的行为特征的一部分

文章来源: javaedge.blog.csdn.net,作者:JavaEdge.,版权归原作者所有,如需转载,请联系作者。

原文链接:javaedge.blog.csdn.net/article/details/120124325

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。