面向对象设计原则之单一职责原则

      单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小。单一职责原则定义如下:

单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。

      单一职责原则告诉我们:一个类不能太“累”!在软件系统中,一个类(大到模块,小到方法)承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作,因此要将这些职责进行分离,将不同的职责封装在不同的类中,即将不同的变化原因封装在不同的类中,如果多个职责总是同时发生改变则可将它们封装在同一类中。

      单一职责原则是实现高内聚、低耦合的指导方针,它是最简单但又最难运用的原则,需要设计人员发现类的不同职责并将其分离,而发现类的多重职责需要设计人员具有较强的分析设计能力和相关实践经验。

      下面通过一个简单实例来进一步分析单一职责原则:

Sunny软件公司开发人员针对某CRMCustomer Relationship  Management,客户关系管理)系统中客户信息图形统计模块提出了如图1所示初始设计方案:

初始设计方案结构图

在图1中,CustomerDataChart类中的方法说明如下:getConnection()方法用于连接数据库,findCustomers()用于查询所有的客户信息,createChart()用于创建图表,displayChart()用于显示图表。

现使用单一职责原则对其进行重构。

      在图1中,CustomerDataChart类承担了太多的职责,既包含与数据库相关的方法,又包含与图表生成和显示相关的方法。如果在其他类中也需要连接数据库或者使用findCustomers()方法查询客户信息,则难以实现代码的重用。无论是修改数据库连接方式还是修改图表显示方式都需要修改该类,它不止一个引起它变化的原因,违背了单一职责原则。因此需要对该类进行拆分,使其满足单一职责原则,类CustomerDataChart可拆分为如下三个类:

      (1) DBUtil:负责连接数据库,包含数据库连接方法getConnection()

      (2) CustomerDAO:负责操作数据库中的Customer表,包含对Customer表的增删改查等方法,如findCustomers()

      (3) CustomerDataChart:负责图表的生成和显示,包含方法createChart()displayChart()

      使用单一职责原则重构后的结构如图2所示:

重构后的结构图

【作者:刘伟  http://blog.csdn.net/lovelion

### 回答1: vue-element-admin的node_modules包是Vue项目所依赖的所有第三方库和插件的集合。在使用vue-element-admin开发项目时,我们通常会引入一些列npm包来完成各种功能需求。 这些node_modules包被存放在项目的根目录下的node_modules文件夹中,每个包都有自己的文件结构和功能。在项目开发中,我们可以根据需要引入相应的包,然后在代码中使用其提供的组件、函数或工具。这些包可能包括Vue官方库、UI框架、路由器、状态管理工具、网络请求库等等。 node_modules包的安装一般通过npm(Node Package Manager)或者yarn(另一种包管理工具)来完成。当我们在项目中引入一个新的依赖时,这些工具会帮助我们自动下载和安装对应的node_modules包,以确保我们能够顺利使用它们。 然而,在实际开发中,由于项目的依赖关系较复杂,node_modules包的体积较大,这会导致node_modules文件夹占用较大的磁盘空间。为此,我们可以通过在.gitignore文件中添加node_modules的忽略规则,来避免将整个node_modules提交到版本控制系统中,从而减小代码仓库的体积。 总结来说,vue-element-admin的node_modules包是Vue项目所依赖的第三方库和插件的集合,它们提供了丰富的功能和工具,帮助我们更高效地开发Vue项目。 ### 回答2: vue-element-admin是一个基于Vue.js和Element UI的开源后台管理系统模板。 node_modules是一个存放着项目依赖包的文件夹。当我们在开发过程中使用了一些外部库或框架时,这些库或框架的代码通常会以npm包的形式存在于node_modules文件夹中。 在vue-element-admin项目中,node_modules文件夹中存放着该项目所依赖的各种npm包。这些包包括了Vue.js和Element UI等核心库,以及其他一些用于构建、优化和扩展项目的辅助工具和插件。 通过将这些依赖包放在node_modules中,我们可以方便地管理和更新项目的依赖关系。当我们在开发过程中需要使用某个依赖包时,只需要在代码中引入即可,而无需手动下载和管理这些依赖包的文件。 在项目初始化的过程中,我们可以通过npm或yarn等包管理工具自动安装项目所需的依赖包。这些工具会根据项目的配置文件(例如package.json)中的依赖项列表,自动从npm仓库中下载相应的包,并将其保存在node_modules文件夹中。 总之,node_modules是存放着vue-element-admin项目所依赖的各种npm包的文件夹。通过这些包,我们可以方便地引入和使用各种功能强大的库和工具,来加速开发和丰富项目的功能。 ### 回答3: vue-element-admin是一个基于Vue.js和Element UI的开源后台管理系统模板。在使用vue-element-admin时,我们需要通过npm或yarn安装相应的依赖包。而这些依赖包通常会被安装在项目根目录下的node_modules文件夹中。 node_modules文件夹是用于存放项目所需的所有依赖包的文件夹。当我们使用npm或yarn安装依赖时,这些依赖包会被自动下载并存放在node_modules文件夹中。在node_modules文件夹中,每个依赖包都有自己的文件夹,其中包含了该依赖包的源代码、样式文件、片等资源。 在vue-element-admin中,node_modules文件夹中的依赖包包括了Vue.js、Element UI以及其他一些第三方库。这些依赖包的存在是为了帮助我们快速搭建一个功能完善的后台管理系统。通过运行npm run dev或yarn serve命令时,vue-element-admin会自动加载和使用这些依赖包,以实系统的各种功能,例如路由管理、页面展示、表单验证等等。 需要注意的是,由于依赖包非常复杂且数量庞大,node_modules文件夹通常会非常庞大,可能会占用较大的磁盘空间。因此,在上传或分享项目时,通常会将node_modules文件夹排除在版本管理工具(如Git)的跟踪之外,而是只保留package.json等描述依赖关系的配置文件,方便他人在自己的开发环境中重新安装依赖包。 总结来说,vue-element-admin的node_modules文件夹是用于存放项目所需依赖包的文件夹,包含了Vue.js、Element UI以及其他第三方库。它是构建vue-element-admin后台管理系统必不可少的一部分,通过使用这些依赖包,我们可以快速搭建出一个功能完善的后台管理系统。
评论 52
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值