(2.2.1)设计模式一览

    设计模式(Design Patterns)

                                  ——可复用面向对象软件的基础

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。

 

 

一、设计模式的六大原则

1、开闭原则(Open Close Principle)

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

2、里氏代换原则(Liskov Substitution Principle)

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

3、依赖倒转原则(Dependence Inversion Principle)

这个是开闭原则的基础,具体内容:真对接口编程,依赖于抽象而不依赖于具体。

4、接口隔离原则(Interface Segregation Principle)

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

5、迪米特法则(最少知道原则)(Demeter Principle)

为什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。

6、合成复用原则(Composite Reuse Principle)

原则是尽量使用合成/聚合的方式,而不是使用继承。

 

二、设计模式的分类

 

总体来说设计模式分为三大类:

创建型模式,共五种:

- [(2.2.2)Java之美[从菜鸟到高手演变]之设计模式一:行为型模式](http://blog.csdn.net/fei20121106/article/details/44278769)

(1)简单工厂模式建立一个工厂类,根据传入值得不同,对实现了同一接口的一些实体类进行实例的创建。接口:实体类的公共接口

(2)多个工厂方法模式在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是不再根据传递字符建立对象,提供多个工厂方法,分别创建对象。

(3)静态工厂模式多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。

(4)抽象工厂模式建立一个工厂接口,创建多个工厂类,每个工厂负责一个产品方法,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。接口:实体类的公共接口+工厂接口

(5)单例模式单例对象能保证在一个JVM中,该对象只有一个实例存在,实现一个getstance方法,实现发挥一个静态对象

(6)建造者模式:类似”多个工厂方法“模式,但在每个方法中创建多个实力类

(7)原型模式:将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象

结构型模式,共七种:

- [(2.2.3)Java之美[从菜鸟到高手演变]之设计模式二:结构型模式](http://blog.csdn.net/fei20121106/article/details/44278979)

(8)适配器模式:

         类适配器:建立适配器接口——该接口中不仅包含目标类的方法&&还添加客户的自定义方法,具体适配器扩展目标类并实现接口。

        对象适配器:建立适配器接口——该接口中不仅包含目标类的方法&&还添加客户的自定义方法,具体的适配器实现接口,并在构造函数中持有目标类的实例。

        接口适配器:原接口中待实现方法太多,先写一个抽象类实现该接口,其他具体类扩展该抽象类

(9)装饰器模式:装饰对象和被装饰对象实现同一个接口,装饰类的构造函数中持有被装饰对象的实例  【镶刻星的游戏装备  蓝星(红星(飞天靴))】

(10)代理模式:创建一个代理类,继承目标类所继承的接口,该代理类持有目标类实例,并在对应的接口方法中自定义逻辑  【代理律师:起诉前,起诉,起诉后】

(11)外观模式:创建一个观察者类持有许多个不同的目标类实例,同一控制他们的行动。【电脑:显示器,主机,音响的开机】

(12)桥接模式:同一目标接口有不同目标类,定义桥接口持有目标接口,并有get/set方法, 桥类实现桥接口【JDBC的链接】

(13)组合模式:统一结构的目标类实例,相互持有【二叉树,链表】

(14)享元模式:实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销【数据库连接池】

行为型模式,共十一种:

- [(2.2.4)Java之美[从菜鸟到高手演变]之设计模式三:行为型模式](http://blog.csdn.net/fei20121106/article/details/44279065)

- [(2.2.5)Java之美[从菜鸟到高手演变]之设计模式四](http://blog.csdn.net/fei20121106/article/details/44279103)

(15)策略模式:设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口。设计一个抽象类,提供辅助函数,可有可无,多个实现类扩展该接口。【加减乘除法和输出函数】

(16)模板方法模式:定义一个抽象类,定义模版方法暴漏对外使用,并要求子类实现钩子方法,其中模版方法内部使用了钩子方法

(17)观察者模式:定义一个主题接口,持有observer接口的实例对象,并在主题接口的继承类的抽象方法中,调用observer的方法。【微信订阅】

(18)迭代子模式

(19)责任链模式:类似于单链条模式:每个目标类都继承一个接口扩展一个抽象类,依次持有,执行时,依次执行。【生产线】

(20)命令模式:将动作对象的动作封装为command接口,并在其实现类中持有动作对象【综合遥控器:灯、空调、电视】

(21)备忘录模式:属性的拷贝,,,通过把指定属性拷贝到一个对象,或者从对象再赋值回来,实现中间状态的记录

(22)状态模式:定义不同状态State,定义管理器Manager持有不同实例,管理器根据当前状态来确定函数的真正调用

(23)访问者模式:定义一个主体accept访问者,其实质是调用访问者的接口函数

(24)中介者模式:容器主体持有Item,Item构建时会带入容器,最终通过容器触发

(25)解释器模式:定义操作类 和 上下文环境Context类,Action类使用Context

其实还有两类:并发型模式和线程池模式。用一个图片来整体描述一下:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值