设计模式系列:总结

来源:互联网 发布:centos 移除账户 编辑:程序博客网 时间:2024/06/05 04:24

零.什么是设计模式:

  设计模式(Designpattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。设计模式是可以解决特定场景的问题的一系列方法。就是问题解决模型。

一.怎么学习设计模式:一个字:实践

写大量代码
写大量代码
写大量代码

设计模式就是某一类型场景下的最佳实践.复杂度到一定程度设计模式的问题你都会遇到,你欠缺的就是代码的复杂度而已.简单的说就是在现有面向对象语言的语法限制下,如何把各种关系转化为 –> 1:N –> 1:1关系.必须有大量hands on的实践,在这个过程中或之后,慢慢总结。读书是帮助总结的。

基本设计模式在java api中都有体现,而且设计模式是可以脱离语言进行讨论的,只是不同语言的实现方法有所区别,如果熟悉java就可以去看java的api实现,熟悉c++可以去看STL或者是boost(boost相当复杂的说),而且有的设计模式需要面向对象特性的支持,可自行选择。

然后投入到大量的项目开发和代码阅读中,任何真正意义上的开发,那些常见的design pattern是想躲也躲不了的,比如MVC, singleton, factory, observer什么的。成熟的源代码中往往用pattern的痕迹会很重,比如java和android源代码。

二.设计模式的重点是

设计模式最核心的概念是什么:抽象,java中体现为抽象类和接口,提取抽象层。

三.其他

  • 掌握每个设计模式一个关键的变化点:比如减少if-else,就要想到状态模式、策略模式、工厂模式等等.每个设计模式的意图是区分的关键

  • 设计模式可以嵌套设计模式

  • 设计模式的各个类图只是它画完整之后是那个样子的,其实多数部分是可以删除的,最精简的反而可以帮助你快速理解,抽象的部分都是可以删除的

  • 设计模式之间的区别也是非常需要注意考虑的,掌握这个更是非常的重要

  • 初级程序员看用哪个设计模式,高级程序员不看设计模式,只看6大设计原则。因为设计模式比较大,它的应用范围比较窄,但是设计原则比较小,它的应用范围反而更大了。高焕堂讲的EIT

  • 设计模式的重点就是增加扩展性和和可维护性

  • 命令模式中,如果我们用面向事项的方式来实现的话:会直接让调用者(invoker)和每个接受者(recevier)之间交互,产生耦合,然后命令模式主要的就是在他们中间增加一层,命令层,来隔开这两者之间的交互,调用者和命令之间交互,命令再去调用具体的接受者来执行命令。中介者模式:面对实现编程,房东和每个租房者之间打交道,通过增加一层中介者:房屋中介,实现租房者只需要跟中介打交道,房东也只需要跟中介打交道。真的应了那句话:软件设计中,我们总能通过增加一层来解决很多软件代码耦合的问题。所有的设计模式不都是这样的吗?中介者模式也是这样的道理。访问者模式或许也是这样的道理。

  • 提炼事物的共同点,然后封装之。

0 0