基础篇(设计模式) ---设计模式解析及练习

目录

概述

原则

分类

项目练习源码

参考


概述

    设计模式具体来说可以被称为GOF设计模式,是1995 年,GoF(Gang of Four,四人组/四人帮)合作出版了

  《设计模式:可复用面向对象软件的基础》一书,共收录了 23 种设计模式,从此树立了软件设计模式领域的里程碑

    设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。

    它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案

    设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性,以及类的关联关系和组合

    关系的充分理解。

原则

    开闭原则

开闭原则由勃兰特·梅耶(Bertrand Meyer)提出,他在 1988 年的著作《面向对象软件构造》中提出:

软件实体应当对扩展开放,对修改关闭。这就是开闭原则的经典定义。

     里氏替换原则

里氏替换原则主要阐述了有关继承的一些原则,以及其中蕴含的原理。它反映了基类与子类之间的关系,

是对开闭原则的补充,是对实现抽象化的具体步骤的规范。

     依赖倒置原则

高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象

其核心思想是:要面向接口编程,不要面向实现编程。

    单一职责原则

单一职责原则又称单一功能原则,由罗伯特·C.马丁(Robert C. Martin)在《敏捷软件开发:原则、模式和实践》中提出

这里的职责是指类变化的原因,单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分

     接口隔离原则

 此原则主要是要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。

     迪米特法则

此原则的含义是如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。

其目的是降低类之间的耦合度,提高模块的相对独立性。

    合成复用原则

合成复用原则又叫组合/聚合复用原则,它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现

其次才考虑使用继承关系来实现,如果要使用继承关系,则必须严格遵循里氏替换原则。

合成复用原则同里氏替换原则相辅相成的,两者都是开闭原则的具体实现规范。

分类

    创建型模式

创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。

这样可以降低系统的耦合度,使用者不需要关注对象的创建细节

    结构型模式

结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,

前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。

    行为型模式

行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成

单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。

范围创建型结构型行为型
Factory Method(工厂方法)Adapter(类) (适配器)Interpreter(解释器)
Template Method(模版方法)
对象Abstract Factory(抽象工厂)
Builder(建造者)
Prototype(原型)
Singleton(单例)
Bridge(桥接)
Composite(组合)
Decorator(装饰者)
Façade(外观)
Flyweight(享元)
Proxy(代理)
Chain of Responsibility(职责链)
Command(命令)
Iterator(迭代器)
Mediator(中介者)
Memento(备忘录)
Observer(观察者)
State(状体)
Strategy(策略)
Visitor(访问者)


项目练习源码

    项目放在了码云上面,项目也是开始阶段,后期会慢慢完善,有兴趣的可以看下

    HTTPS地址:https://gitee.com/Coder_Light/design-pattern.git

    SSH地址:git@gitee.com:Coder_Light/design-pattern.git

参考

    菜鸟教程——设计模式

    http://www.runoob.com/design-pattern/design-pattern-tutorial.html

   Java设计模式:23种设计模式全面解析(超级详细)

    http://c.biancheng.net/design_pattern/

    别的博主总结的,写的挺详细的

    https://blog.csdn.net/wwwdc1012/column/info/27107

 

    
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值