我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由多个对象组成的,所有的对象通过彼此之间的合作,最终实现系统的业务逻辑,为了解决对象之间的耦合度过高的问题,Spring的IOC理论,用来实现对象之间的“解耦”.IOC的中文意思就是“控制反转”,通俗的理解成权利反转,本来对象的创建由程 ...
分类:
编程语言 时间:
2017-01-12 12:49:20
阅读次数:
219
代码重构 6大原则: 单一职责原则(一个类最好最好只有一种行为动机,太多承担职责会导致耦合度太高)、 开放封闭原则(功能可以扩展,但是不可以内部修改)、 依赖倒转原则(应该依赖抽象而不应该依赖具体对象)、 里氏代换原则(父类都替换成它的子类程序的行为没有变化。 正是有了里氏代换原则,才使得”开-闭“ ...
分类:
编程语言 时间:
2017-01-09 20:37:53
阅读次数:
331
传统架构 思考:有什么问题? 1、 模块之间耦合度太高,其中一个升级其他都得升级 2、 开发困难,各个团队开发最后都要整合一起 3、 系统的扩展性差 4、 不能灵活的进行分布式部署。 解决方法: 优点:把模块拆分成独立的工程,单点运行。如果某一个点压力大可以对这一个点单独增加配置。其他的点不受影响。 ...
分类:
其他好文 时间:
2017-01-07 18:01:51
阅读次数:
207
外观模式是为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口,看下类图:(我们以一个计算机的启动过程为例) 我们先看下实现类: [java] view plai ...
分类:
编程语言 时间:
2016-12-30 19:09:00
阅读次数:
189
Struts2的拦截器 1、Struts2的拦截器只能拦截Action,拦截器是AOP的一种思路,可以使我们的系统架构 更松散(耦合度低),可以插拔,容易互换,代码不改变的情况下很容易满足客户需求 其实体现了OCP 2、如何实现拦截器?(整个拦截器体现了责任链模式,Filter也体现了责任链模式) ...
分类:
其他好文 时间:
2016-12-25 17:59:31
阅读次数:
226
一、 访问者(Vistor)模式 访问者模式是封装一些施加于某种数据结构之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保存不变。访问者模式适用于数据结构相对稳定的系统, 它把数据结构和作用于数据结构之上的操作之间的耦合度降低,使得操作集合可以相对自由地改变。 数据结构的每一个节点 ...
再次调整项目架构是因为和群友dezhou的一次聊天,我原来的想法是项目尽量做简单点别搞太复杂了,仅使用了DbContext的注入,其他的也没有写接口耦合度很高。和dezhou聊过之后我仔细考虑了一下,还是解耦吧,本来按照软件设计模式就应该是高内聚低耦合的,低耦合使项目的模块独立于其他模块,增加了可维... ...
分类:
Web程序 时间:
2016-12-19 08:55:32
阅读次数:
249
所谓工厂模式,工厂即指生产物品的车间,代码的工厂模式,就是提供实例方法,把他封装起来,就成为了一个工厂,而工厂就可以为我们提供实例对象,另外工厂还有一个特性,就是我们不用关心工厂是如何生产实例的,我们只需要告诉它要生产什么实例,它就为我们提供什么实例 而抽象工厂,作用是为了更大可能的解除方法调用间的 ...
分类:
其他好文 时间:
2016-12-16 17:02:10
阅读次数:
250
1.单例模式 单例模式顾名思义,就是只有一个实例。作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 单例模式的要点有三个: 一是某个类只能有一个实例; 二是它必须自行创建这个实例; 三是它必须自行向整个系统提供这个实例。 为什么要使用PHP单例模式 1 ...
分类:
Web程序 时间:
2016-12-16 01:39:23
阅读次数:
248
消息中间件MessageQuene 解耦且可扩展:业务复杂度的提升带来的也是耦合度的提高,消息队列在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口。这允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。 冗余:有些业务在处理过程中如果失败了,数据在未 ...
分类:
其他好文 时间:
2016-12-15 14:19:32
阅读次数:
203