架构师成长之路
joey_wuhan
这个作者很懒,什么都没留下…
展开
-
(五)设计原则之合成复用原则
合成复用原则定义:在系统中尽量多使用组合或聚合关联关系,少使用或不使用继承关系。为何?因为继承存在一个风险,当超类的实现发生变更了,其子类也不得不发生改变,如此一来就违反了开闭原则,因此慎用继承;具体如何使用:1.尽量使用对象来组合;2.通过关联关系使用一些已有的对象;其中组合和聚合是要一点区分,在类的设计上,是有区分的;例如人和四肢,这个时候用组合的关系;例如班级和学生,这个时候用聚合的关系;显...原创 2018-03-22 19:44:39 · 586 阅读 · 0 评论 -
(六)设计原则之接口隔离原则
接口隔离原则定义:使用多个专门的接口来替换一个统一的接口;怎么理解?和之前讲过的单一职责原则类似,单一职责原则是针对类来说的,而接口隔离原则是针对接口来讲;本质诉求是,客户端不应该依赖它不需要的接口,一个类对一个类的依赖,应该建立在最小的接口上。例如状态模式中的应用,其接口需要实现的方法是单一隔离的,并且与其自身密切相关;...原创 2018-03-23 14:46:04 · 209 阅读 · 0 评论 -
设计原则
2018年雷.达里奥的《原则》很畅销,作者总结了从自己白手起家40多年来的生活和工作原则,从而不断进化,实现自我;我最早听到原则这个词,应该是98年,那时初中刚毕业,在工地当农民工,一位年长的老乡告诉我“做事情是要有原则的"。逐渐理解原则,是从去年开始,听李善友教授的认知课。其中有关于巴菲特投资原则的思维模型,他和盖茨是好友,担当过盖茨的证婚人,然而他从来没有购买微软的股票,尽管微软...原创 2018-03-19 19:35:04 · 237 阅读 · 0 评论 -
(一)设计原则之开闭原则
开闭原则的定义:软件实体对扩展是开放的,对修改是关闭的;怎么理解呢?不修改一个软件实体的基础上,能够支持其功能的扩展;换句话说,就是可以在不修改系统现有代码的前提下,实现对应用系统软件功能的扩展。举个例子,我们的适配器模式,如图所示:我们想增加一项功能,要让猪不仅能跑,而且还能飞;此时,不应该直接在Pig上增加fly()的方法,因为如此一来违反了开闭原则;而是采用适配器模式,关于适配器的细节,会在...原创 2018-03-19 20:01:37 · 213 阅读 · 0 评论 -
(七)设计原则之迪米特法则
迪米特法则定义:一个软件实体对其他实体的引用越少越好,换句话说,如果两个类不彼此直接通信,那么这两个类就不应当发生直接的相互作用,而是通过一个第三者发生间接交互。怎么理解?先看一下,它的别称是最少知道原则,就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人讲话。它的初衷是降低或减少类之间的耦合,也就减少了对其他类的依赖,如此会容易使得系统的功能模块独立。我们的门面模式(Facade)和中介模...原创 2018-03-23 15:36:01 · 178 阅读 · 0 评论 -
(二)设计原则之依赖倒转原则
依赖倒转原则的定义:要针对抽象进行编程,而不是针对具体类进行编程;如何理解?不直接对类进行实例化,获取其对象,而是通过其接口或抽象类来衔接;典型的应用如风靡全球编程界的Sping IOC。具体如何做呢?1.上层模块要依赖于下层模块,即高层不依赖底层,它们应该依赖于一个抽象;2.抽象不依赖于具体实现,而具体应该依赖于抽象;3.父类不依赖于子类,它们应该依赖于一个抽象;例如如下的抽象工厂模式: ...原创 2018-03-20 19:19:59 · 164 阅读 · 0 评论 -
(三)设计原则之单一职责原则
单一职责原则定义:类的职责要单一,不能将非己职责放在一个类中;它是高内聚原则,避免将相同的职责分散到不同的类中去实现,同时也避免承担过多的职责,用以减少类之间的耦合。举个例子,A有两项不同的功能B1和B2,如果B1因为需求改变了,原本正常运行的B2也要跟着改变;这样B1和B2就过于耦合,需要独立开来,因此A需要进行拆解;如图合成模式中的Files(文件夹)和Doc(文件),它们虽然有交集,然而职责...原创 2018-03-21 19:15:54 · 135 阅读 · 0 评论 -
(四)设计原则之里氏替换原则
里氏替换原则定义: 任何基类出现的地方,其子类一样可以出现;经常的应用例如List alist = new ArrayList(), 显然ArrayList是List的子类;其中要注意:1.子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法;2.子类可以增加自己特有的方法;3.如果子类的方法要重载父类的方法时,方法的形参要比父类方法的输入参数更加宽松;4.当子类的方法实现父类的抽象方法时,方法...原创 2018-03-21 19:45:25 · 180 阅读 · 0 评论 -
设计模式之单例模式
讲完了设计原则,开始进行对设计模式的理解与应用;每个模式,我们都从场景、定义、编码、问题反思等几个方面来分享;单例模式-场景:1.一个党只能有一个主席。 2.Windows的文件只能被一个实例访问。3.一次性只能连接一台打印机执行打印。对于系统的研发来说,每多一个实例,会多占用一定内存,而内存是相对有限的。定义:确保一个类仅有一个唯一的实例,并且提供一个全局的访问点;编码:public class...原创 2018-03-27 19:56:50 · 176 阅读 · 0 评论