• 浅谈设计模式


      米老师布置了作业,分析23种设计模式的异同,绞尽脑汁,冥思苦想还是认为初学设计模式,此问题过于高深实在不敢妄语。可是作业始终是要交的,只好浅谈一下设计模式,如理解有误,也算留下了一个底子,日后回头再看,这便是成长。

      关于分类,设计模式分为三大类,分别为行为型,创建型,和状态型。 亦有几大原则,分别为:单一职责原则、开放-封闭原则、依赖导致原则、迪米特法则。

      总体来说,不论什么模式,都是为了更好的发挥面向对象的思想,来加强类内部的内聚,来降低类与类之间的耦合,尽量做到“高内聚,低耦合”,尽可能把面向对象的优势扩大。设计模式是前辈们总结出来的开发经验,利用这些模式可以更灵活的扩展和维护我们的程序。但是,需要切记不能为了使用设计模式而使用设计模式,一旦使用不当,便会造成代码的冗余。

      先来说说创建型设计模式。所谓创建型,一定与对象的创建有关,像简单的单例模式,和工厂模式,建造者模式,这些模式都将创建的过程来封装在具体的类中。使用者并不需要了解这些对象是怎样被创建的,就可以获取到该对象的实例。创建型模式抽象了实例化的过程,他们帮主一个系统独立于如何创建、组合和表示他们的对象。创建型模式都会讲关于该系统使用哪些具体的类的信息封装起来,允许客户用结构和功能差别很大的‘产品’对象配置一个系统。配置可以是静态的,即在编译时指定,也可以是动态的,就是运行时再指定。

      设计模式并不是独立存在的,仅仅在23种设计模式中,就可以看到设计模式的嵌套使用,例如建造者模式当中采用了模板方法模式,这种类似的情形还有很多,不能一一列举,如读者感兴趣,可自行探索。设计模式并不是四人帮或是某人规定的,开发人员在不知不觉中就可能由于经验的积累使用了某种模式,GoF将他们总结了下来,并且提出,来给更多的开发者一个“巨人的肩膀”。

      接下来说说结构型模式,它是一种为了扩大结构而存在的模式。结构型模式描述了如何将类或者对象结合在一起星辰更大的结构,来适应更高层次的逻辑需求。这里主要说说理解比较深刻的适配器模式,适配器模式将一个类的接口转换为客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的哪些类可以一起工作。显然这是一个强大的结构。就好比我们的usb接口可以连接各种适配器,来将通用的接口转换为达到各种不同需求的接口。适配器模式固然强大,但是切记万万不可为了使用适配器模式而去用适配器模式,因为适配器模式是一种补救手段,如果在设计之初,就统一了接口,便不会用到适配器模式。其他结构型模式并没有很透彻的理解,或者是并没有在实践中用过,所以观点先给予保留。

      设计模式中有相互嵌套使用的,那么也有极为相似的。下面,就以行为型模式中的两个模式来举例。行为型模式是对不同对象之间划分责任和算法的抽象化。接下来要提到的两种模式分别是策略模式和状态模式,从结构上来看,这两种模式十分的相似,前者是封装了抽象的策略,后者是封装了抽象的状态,然后从具体的情况选择对应的策略,或者展示对应的状态。那么这两种模式的区别在哪里呢?区别就在于,策略模式的具体策略是由Client决定的(在其构造方法中,提供了具体的策略public Context(Strategy strategy) ),而状态模式,是由他本身决定的(从内部对其封装的状态赋值)。这是这两种模式最大的区别,因此,在模式的选择上,还要细心。

      到此,本文就要烂尾了..主要是没有深刻理解设计模式,不敢胡乱编造,因此只做简单的分析,希望在以后的日子里,能不断的成长,到真正有实力,有信心的时候,就可以写一篇《深入设计模式》.

    参考资料:《大话设计模式》

  • 相关阅读:
    java.lang.NoClassDefFoundError: org/activiti/validation/ProcessValidator
    java.lang.NoClassDefFoundError: org/activiti/image/ProcessDiagramGenerator
    14.10.1 InnoDB Disk I/O
    shiro权限验证标签
    14.9.4 COMPACT and REDUNDANT Row Formats
    Spring整合Shiro做权限控制模块详细案例分析
    14.9.2 Specifying the Row Format for a Table 指定 表的行格式
    全虚拟化与半虚拟化的实现方式
    全虚拟化与半虚拟化的实现方式
    查询方式的一般使用2
  • 原文地址:https://www.cnblogs.com/muyuge/p/6333580.html
Copyright © 2020-2023  润新知