关于可配置程序设计的简单理解

本文探讨可配置程序设计的必要性,通过代码编写存在的问题引出可配置设计的概念,通过实例解释如何通过配置文件实现程序的灵活性,对比可配置与接口、继承的异同,并列举了Spring、Android等领域的配置设计应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写这篇文章的目的,不在于说明相应的细节,而在于理解可配置的一些含义。

代码编写中存在的一些问题


在程序设计中,通过代码编写的逻辑是存在这样子的一个问题的。
假如你将程序的逻辑全部放在代码中(即使是字符串),那么这样子造成的影响会使得你的程序变得十分的不灵活。为什么呢?
每次你对于程序的一些改动,都需要进行重新编译的。这就会为开发人员带来很大的不便。可配置的程序设计就是为了解决这个问题。

举一个例子来进行说明。


        这里拿经过编译器进行编译的程序进行举例。假如说我要设计这样子的一个程序,小明去某个教室上自习。这是一个简单的例子,那么接下来我们将这个句子进行分解,我们会发现这个句子中有一些东西是可以变化的,“谁,去哪里,做什么”,这就构成了可变的部分。
       如果我用java代码进行编写的话,如何实现这种可变的组合呢?我需要设置三个接口,将这种关系表达出来。我需要将这些东西具体化,“谁”这个角色我是需要分配一定的名字的,然后“去哪里”,“做什么”也是同样的道理,我需要将这些东西具体化了之后,才能形成真正的对象,才能表述一个真正的事情,否则我刻画的东西就是抽象的。
       因为有3个可变化的部分,这里我就只拿“谁”这个模块来进行举例子。接口的存在决定了,我进行了一些基本规则的制定,但是,这只是一个抽象的规则,我在规则的基础上进行添加,形成的是,我将类具体化之后形成的是对象。(有点扯远了)
       下面我们想说说小明的故事。小明去教室上自习。但是如果换成小李的话,应该怎么办呢?我们需要将小李的名字作为参数传入对象中,这个过程中只是把名字换了一下。
       那么名字来自哪里呢?我在程序里写好了。好吧,那么当我想说明小李去某个教室上自习的时候,我只需要在程序中替换相应的对应小明的字符串即可。听上去也似乎挺简单的。但是你对字符串进行了改动之后,你需要将程序重新编译,然后重新运行才能达到相应的效果。(这个过程是十分耗费时间的),仅仅是改动了一个名字却造成了这么多的困难,因为即便“小李”这个名字只是个字符串,那么他也得是存在于程序中的一部分,既然是程序中的一部分,就得通过编译才能得到执行。
       那么这个问题应该如何解决呢?想到的办法是将这部分从程序中分离出去,当“小李”不再属于程序内部的时候,那么他就可以免去再次编译的麻烦,这是十分重要的一点。这就引出了我们所说的可配置性。
       为什么说是可配置的?一个很重要的原因在于,我们将一部分容易改变的内容程序中分离出来。通过配置文件来与程序进行交互,让配置文件来使具体的内容”小明“与程序解耦。配置文件在这个中间层次中发挥了巨大的作用。

可配置与接口,继承相同与不同


相同点
- 【目的相同】都是为了考虑到了可以变的部分,为了使程序更加灵活,使程序改动造成的影响更小。

不同点
- 【粒度不同】接口、继 承 实现的是类型上统一(动物接口的存在是为了统一人类与猴子类)。而可配置的一般是用于程序内部常量的改变,配置文件是为了方便改变一个类的不同对象,或者对象的不同状态(”小明“和”小李“都是人类,只是是人类的不同实例)。
- 可以说接口、继承统一的粒度更大。而配置文件能够达到的效果是比较小的。

在程序中到处都是配置设计的存在

Spring

Android


       android中通过xml进行权限配置,通过xml配置图形界面,然后通过activity进行加载。android还存在着大量的资源,比如说string资源,这里面用到了各种各样子的字符串 ,可以保存在string.xml文件中,这样子相当于里面的字符串摆脱了编译控制。

flowdroid


       flowdroid是一个用来分析android,进行污点检测的工具。在它的设计中是接触外界输入的参数的,这些参数构成了flowdroid运行的一些基本要求。当你在命令行使用参数的时候,就说明了你在使用和配置相关的一些内容。
       在flowdroid中,你 可以直接使用相关的API在java程序中使用flowdroid,当然也可以运行它的主程序,然后传参数给它。两种达到的效果是一样的,只不过前者更灵活一些,只不过相对复杂。

服务器的配置


       当我们想要搭建一个网站的时候,我们就会使用到后台服务器的。但是我们一般用到的是一个可执行的程序,而不是一段代码。是因为服务器将可变的部分分离了出来,然后然后用户运行时候,只需要改变相应的配置文件即可。
       比如说,你想改变你的文件路径,这些在配置文件中规定好了,你可以改变的是文件路径的字符串,但是你得遵循一定的模式(这里所说的模式,设计者已经在xml中规定好了)。并且程序的内部识别的是这些模式,如果你没有按照这些规定的模式,那么就配置文件出错了。(协议总是要存在,不可能达到绝对的灵活,合作的含义在于在自由与限制寻求一种平衡点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值