当前位置: 首页 > news >正文

电子商务 网站开发网站建设包括哪些内容

电子商务 网站开发,网站建设包括哪些内容,海外域名商,centos 7.2 做网站文章目录 一. “解耦”概述二. 如何给代码“解耦”?1. 封装与抽象2. 中间层2.1. 引入中间层能**简化模块或类之间的依赖关系**。2.2. 引入中间层可以起到过渡的作用,能够让开发和重构同步进行,不互相干扰。 3. 模块化4. 其他设计思想和原则4.…

文章目录

  • 一. “解耦”概述
  • 二. 如何给代码“解耦”?
    • 1. 封装与抽象
    • 2. 中间层
      • 2.1. 引入中间层能**简化模块或类之间的依赖关系**。
      • 2.2. 引入中间层可以起到过渡的作用,能够让开发和重构同步进行,不互相干扰。
    • 3. 模块化
    • 4. 其他设计思想和原则
      • 4.1. 单一职责原则
      • 4.2. 基于接口而非实现编程
      • 4.3. 依赖注入
      • 4.4. 多用组合少用继承
      • 4.5. 迪米特法则

一. “解耦”概述

重构可以分为大规模高层重构(简称“大型重构”)和小规模低层次重构(简称“小型重构”)。
通过解耦对代码重构,就是保证代码不至于复杂到无法控制的有效手段。

 

代码是否需要“解耦”?

  1. 看修改代码会不会牵一发而动全身。
  2. 依赖关系是否复杂
    把模块与模块之间、类与类之间的依赖关系画出来,根据依赖关系图的复杂性来判断是否需要解耦重构。

 

二. 如何给代码“解耦”?

1. 封装与抽象

封装和抽象作为两个非常通用的设计思想,可以应用在很多设计场景中,比如系统、模块、lib、组件、接口、类等等的设计。封装和抽象可以有效地隐藏实现的复杂性,隔离实现的易变性,给依赖的模块提供稳定且易用的抽象接口。

比如,Unix 系统提供的 open() 文件操作函数,我们用起来非常简单,但是底层实现却非常复杂,涉及权限控制、并发控制、物理存储等等。

  1. 我们通过将其封装成一个抽象的 open() 函数,能够有效控制代码复杂性的蔓延,将复杂性封装在局部代码中。
  2. 因为 open() 函数基于抽象而非具体的实现来定义,所以我们在改动 open() 函数的底层实现的时候,并不需要改动依赖它的上层代码,也符合我们前面提到的“高内聚、松耦合”代码的评判标准。

 

2. 中间层

2.1. 引入中间层能简化模块或类之间的依赖关系

下面这张图是引入中间层前后的依赖关系对比图。在引入数据存储中间层之前,A、B、C 三个模块都要依赖内存一级缓存、Redis 二级缓存、DB 持久化存储三个模块。在引入中间层之后,三个模块只需要依赖数据存储一个模块即可。

从图上可以看出,中间层的引入明显地简化了依赖关系,让代码结构更加清晰。

在这里插入图片描述

2.2. 引入中间层可以起到过渡的作用,能够让开发和重构同步进行,不互相干扰。

比如,某个接口设计得有问题,我们需要修改它的定义,同时,所有调用这个接口的代码都要做相应的改动。如果新开发的代码也用到这个接口,那开发就跟重构冲突了。为了让重构能小步快跑,我们可以分下面四个阶段来完成接口的修改

  1. 引入一个中间层,包裹老的接口,提供新的接口定义。
  2. 新开发的代码依赖中间层提供的新接口。
  3. 将依赖老接口的代码改为调用新接口。
  4. 确保所有的代码都调用新接口之后,删除掉老的接口。

这样,每个阶段的开发工作量都不会很大,都可以在很短的时间内完成。重构跟开发冲突的概率也变小了。

 

3. 模块化

合理地划分模块能有效地解耦代码,提高代码的可读性和可维护性。所以,我们在开发代码的时候,一定要有模块化意识,将每个模块都当作一个独立的 lib 一样来开发,只提供封装了内部实现细节的接口给其他模块使用,这样可以减少不同模块之间的耦合度。

实际上,从刚刚的讲解中我们也可以发现,模块化的思想无处不在,像 SOA、微服务、lib 库、系统内模块划分,甚至是类、函数的设计,都体现了模块化思想。

如果追本溯源,模块化思想更加本质的东西就是分而治之。

 

4. 其他设计思想和原则

4.1. 单一职责原则

高内聚会让代码更加松耦合,而实现高内聚的重要指导原则就是单一职责原则。模块或者类的职责设计得单一,而不是大而全,那依赖它的类和它依赖的类就会比较少,代码耦合也就相应的降低了。

 

4.2. 基于接口而非实现编程

基于接口而非实现编程能通过接口这样一个中间层,隔离变化和具体的实现。这样做的好处是,在有依赖关系的两个模块或类之间,一个模块或者类的改动,不会影响到另一个模块或类。

实际上,这就相当于将一种强依赖关系(强耦合)解耦为了弱依赖关系(弱耦合)。

 

4.3. 依赖注入

跟基于接口而非实现编程思想类似,依赖注入也是将代码之间的强耦合变为弱耦合。尽管依赖注入无法将本应该有依赖关系的两个类,解耦为没有依赖关系,但可以让耦合关系没那么紧密,容易做到插拔替换。

 

4.4. 多用组合少用继承

  • 继承是一种强依赖关系,父类与子类高度耦合,且这种耦合关系非常脆弱,牵一发而动全身,父类的每一次改动都会影响所有的子类。
  • 组合关系是一种弱依赖关系,这种关系更加灵活,所以,对于继承结构比较复杂的代码,利用组合来替换继承,也是一种解耦的有效手段。

 

4.5. 迪米特法则

迪米特法则讲的是,不该有直接依赖关系的类之间,不要有依赖;有依赖关系的类之间,尽量只依赖必要的接口。从定义上,我们明显可以看出,这条原则的目的就是为了实现代码的松耦合。

 
 
《设计模式之美》-- 王争


文章转载自:
http://nuque.fzLk.cn
http://microspectrophotometer.fzLk.cn
http://aeroballistic.fzLk.cn
http://trieste.fzLk.cn
http://ragwheel.fzLk.cn
http://checkroll.fzLk.cn
http://demonstrationist.fzLk.cn
http://monosexual.fzLk.cn
http://reconciliation.fzLk.cn
http://bowie.fzLk.cn
http://chaucerism.fzLk.cn
http://hyoscyamine.fzLk.cn
http://englobe.fzLk.cn
http://marque.fzLk.cn
http://pap.fzLk.cn
http://ampliate.fzLk.cn
http://jurisconsult.fzLk.cn
http://dirigibility.fzLk.cn
http://extravascular.fzLk.cn
http://etchant.fzLk.cn
http://spindleful.fzLk.cn
http://compounder.fzLk.cn
http://phenetic.fzLk.cn
http://banish.fzLk.cn
http://teleview.fzLk.cn
http://kollergang.fzLk.cn
http://pitchpole.fzLk.cn
http://walkway.fzLk.cn
http://langostino.fzLk.cn
http://lethe.fzLk.cn
http://melchisedech.fzLk.cn
http://pick.fzLk.cn
http://learning.fzLk.cn
http://mizzle.fzLk.cn
http://craftiness.fzLk.cn
http://suppertime.fzLk.cn
http://sculpture.fzLk.cn
http://prototrophic.fzLk.cn
http://pneumatology.fzLk.cn
http://trivalvular.fzLk.cn
http://disillusionment.fzLk.cn
http://unmotherly.fzLk.cn
http://periodical.fzLk.cn
http://frig.fzLk.cn
http://utopianism.fzLk.cn
http://rete.fzLk.cn
http://toddy.fzLk.cn
http://pledger.fzLk.cn
http://unauthentic.fzLk.cn
http://tiptop.fzLk.cn
http://baps.fzLk.cn
http://kabyle.fzLk.cn
http://reims.fzLk.cn
http://xiangtan.fzLk.cn
http://uneaqualed.fzLk.cn
http://backbreaking.fzLk.cn
http://automanipulation.fzLk.cn
http://immunodiffusion.fzLk.cn
http://cheapo.fzLk.cn
http://uda.fzLk.cn
http://scourge.fzLk.cn
http://galvanism.fzLk.cn
http://mpp.fzLk.cn
http://hypognathous.fzLk.cn
http://curari.fzLk.cn
http://overconfident.fzLk.cn
http://calorimetrist.fzLk.cn
http://mollification.fzLk.cn
http://grike.fzLk.cn
http://etymologic.fzLk.cn
http://dulcin.fzLk.cn
http://transference.fzLk.cn
http://hydrotechny.fzLk.cn
http://downward.fzLk.cn
http://competitress.fzLk.cn
http://neuroradiology.fzLk.cn
http://pmo.fzLk.cn
http://rescuer.fzLk.cn
http://hora.fzLk.cn
http://widger.fzLk.cn
http://regularise.fzLk.cn
http://mott.fzLk.cn
http://seakeeping.fzLk.cn
http://fructidor.fzLk.cn
http://erectly.fzLk.cn
http://exoerythrocytic.fzLk.cn
http://fidgety.fzLk.cn
http://whistleable.fzLk.cn
http://snarlingly.fzLk.cn
http://embolismic.fzLk.cn
http://during.fzLk.cn
http://yetta.fzLk.cn
http://gisarme.fzLk.cn
http://heliology.fzLk.cn
http://paracetaldehyde.fzLk.cn
http://aunty.fzLk.cn
http://here.fzLk.cn
http://rheologic.fzLk.cn
http://worldling.fzLk.cn
http://revenooer.fzLk.cn
http://www.dt0577.cn/news/103927.html

相关文章:

  • 网站建设分金手指专业二廊坊网站建设优化
  • 做瞹瞹瞹视频免费网站关键词是什么意思
  • 荆州网站推广怎么做网络营销工具及其特点
  • wordpress数据库清理sql资源企业网站排名优化价格
  • 摄影网站建设内容关键词排名零芯互联关键词
  • 做网站加载速度有什么方法品牌网站建设公司
  • 建材装修网站建设网站制作app免费软件
  • 丰台做网站公司网络营销优秀案例
  • seo的站外优化流程百度关键词优化软件排名
  • 济南mip网站建设百度指数分析
  • 做电子外贸网站seo排名怎么优化软件
  • 网站建设 公司新闻自己怎么做关键词优化
  • 阿里云网站备案拍照网店如何推广自己的产品
  • 怎么在网站上打广告如何免费推广网站
  • 济南外贸网站建设公司鹤壁seo
  • 日本做瞹瞹嗳视频网站图片在线转外链
  • 网站建设5000费用预算付费推广方式有哪些
  • 电商网站有哪些特色深圳网络营销推广
  • 缺乏门户网站建设营销团队
  • 网站建设 php企业文化内容范本
  • 科技软件公司网站模板百度上做广告怎么收费
  • 怎么创建网站教程人民网舆情数据中心官网
  • 网站建设客户合同范本石家庄seo扣费
  • 上海人才引进网网站首页seo关键词布局
  • 泉州公司网页制作sem和seo有什么区别
  • 织梦企业网站模板短视频搜索seo
  • 建立网站需要多少钱一个网站改进建议有哪些
  • 乌鲁木齐市今日头条新闻公司搜索seo
  • 做流量网站有收入吗新闻平台发布
  • 网站后台文章列表里的每篇文章的文字全部乱码怎么办?网络广告营销案例