vlambda博客
学习文章列表

程序员内功心法《设计模式》

灵魂三问


第一问, 什么是设计模式?

设计模式是在软件工程实践过程中,JAVA使用者们总结出的良好的编程方法,使用设计模式能够增加系统的健壮性,易修改性和可扩展性,当你进行开发的软件规模比较大的时候,良好的设计模式会给编程带来便利,让系统更加稳定。

 

第二问,为什么要学习设计模式

普遍的目的:

1、别人都说要学,别人都说好,所以我要学

2、面试会被问,所以必须学

3、读源码时看到别人在用,不学看不懂源码为什么这样写

4、我刚好看到一套设计模式的视频,嗯老师讲的不错,我想学学

 

最终的目的:

1写出高质量的代码,做出高可用的稳定的以扩展系统,秒杀搬砖代码

2设计模式,是架构之路的基础,不懂设计模式的人,很难成为架构师。

3提升自身价值,不管是做开发还是设计,掌握设计模式,都能够凸显自己的技术水平。

4、升值加薪

 

第三问:学完设计模式对我有什么好处

设计模式之于面向对象系统的设计和开发的作用就犹如数据结构之于面向过程开发的作用一般,可以说,不会设计模式的编码人员不能称之为工程师。

 

设计模式原则:


一、单一职责原则:

一个类,只有一个引起它变化的原因。应该只有一个职责。每一个职责都是变化的一个轴线,如果一个类有一个以上的职责,这些职责就耦合在了一起。这会导致脆弱的设计。当一个职责发生变化时,可能会影响其它的职责。另外,多个职责耦合在一起,会影响复用性。例如:要实现逻辑和界面的分离。
 

二、开闭原则

开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。



三、里氏替换原则

里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。

 

四、依赖倒置原则

所谓依赖倒置原则(Dependence Inversion Principle)就是要依赖于抽象,不要依赖于具体。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。实现开闭原则的关键是抽象化,并且从抽象化导出具体化实现,如果说开闭原则是面向对象设计的目标的话,那么依赖倒转原则就是面向对象设计的主要手段。

 

五、接口隔离原则:

这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。所以上文中多次出现:降低依赖,降低耦合。

 

六、合成复用原则:

合成复用原则就是指在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分;新对象通过委派调用已有对象的方法达到复用其已有功能的目的。简言之:要尽量使用组合/聚合关系,少用继承。

 

七、迪米特法则

为什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。也就是说一个软件实体应当尽可能少的与其他实体发生相互作用。这样,当一个模块修改时,就会尽量少的影响其他的模块,扩展会相对容易,这是对软件实体之间通信的限制,它要求限制软件实体之间通信的宽度和深度


设计模式汇总



一、什么是创建型模式?

在软件工程中,创建型模式是处理对象创建的设计模式,试图根据实际情况使用合适的方式创建对象。基本的对象创建方式可能会导致设计上的问题,或增加设计的复杂度。创建型模式通过以某种方式控制对象的创建来解决问题。


创建型模式由两个主导思想构成。

  • 一是将系统使用的具体类封装起来

  • 二是隐藏这些具体类的实例创建和结合的方式。      


创建型模式又分为对象创建型模式和类创建型模式。对象创建型模式处理对象的创建,类创建型模式处理类的创建。详细地说,对象创建型模式把对象创建的一部分推迟到另一个对象中,而类创建型模式将它对象的创建推迟到子类中。


它主要包括6种设计模式:【简单工厂模式】、【工厂模式】、【抽象工厂模式】、【单例模式】、【建造者模式】、【原型模式】。

 

二、什么是结构型模型

结构型模式涉及到如何组合类和对象以获得更大的结构。结构型模式采用继承机制来组合接口或实现。结构型对象模式不是对接口和实现进行组合,而是描述了如何对一些对象进行组合,从而实现新功能的一些方法。因为可以在运行时刻改变对象组合关系,所以对象组合方式具有更大的灵活性

它主要包括7种设计模式:【适配器模式】、【桥接模式】、【组合模式】、【装饰者模式】、【外观模式】、【享元模式】、【代理模式】。

 

三、什么是行为型模型

行为型模式主要是用于描述类或者对象是怎样交互和怎样分配职责的。它涉及到算法和对象间的职责分配,不仅描述对象或者类的模式,还描述了他们之间的通信方式,它将你的注意力从控制流转移到了对象间的关系上来。行为型类模式采用继承机制在类间分派行为,而行为型对象模式使用对象复合而不是继承。

它主要包括如何11设计模式:【职责链模式】、【命令模式】、【解释器模式】、【迭代器模式】、【中介者模式】、【备忘录模式】、【观察者模式】、【状态模式】、【策略模式】、【模板方法模式】、【访问者模式】。

欢迎关注“程序员涨薪基地”