软考中的设计模式[通俗易懂]

软考中的设计模式[通俗易懂]软考中的设计模式

大家好,又见面了,我是你们的朋友全栈君。

       在软考之前,对设计模式的理解只是停留在概念的层面上,通过这次系统的复习, 更加深刻的认识了设计模式。

考试前几天我们小组又串了一遍设计模式,总结了一些需要注意的点:

1.看类图

       软考刚开始的时候做设计模式,觉得不需要看类图,根据前后代码就可以填空,直到最后才发现类图才是设计模式的核心。

       拿到一个设计模式后,先看一下概念,接下来看的就是类图,图中有哪些抽象类,接口,具体类,类与类,类与接口有什么对应关系。

        抽象(abstract)类(class)

        接口(interface)

2.找关系

       关系是转换成代码的关键,在类图中常见的关系有泛化,实现,关联(聚合,组合),依赖(在大话中有依赖和关联有明显的区分,在HeadFirst中都是用关联来体现的)。

       从最简单的开始说起,泛化(也就是继承,只是看问题的角度不同),体现的是抽象类与具体类的关系,代码体现为:“具体类 extends 抽象类”

       实现:一般为类与接口的关系,代码体现为:“类 implements 接口”。

       ……

       曾经专门介绍过UML类图中的关系,就不一一介绍了。

3.图和代码的转换

        最重要的一步就是将图转换成代码,因为写对了,就拿分了。


下面通过我们熟悉的组合模式来讲一讲分析思路。

       首先看定义:组合模式将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。

       这么看定义也很难理解,下面继续分析

       看类图

软考中的设计模式[通俗易懂]

       在这张图中,我们可以看到有Component抽象类,Leaf和Composite两个具体类,还有一个客户端用来实现对设计模式的调用。具体类Leaf和Composite继承了抽象类,Composite由Component聚合而成(个人认为这里聚合的真正对象是Leaf,因为抽象类是不能被实例化的)。

       找到了类和关系后,我们就来实现代码和图的转换:

首先是继承关系

软考中的设计模式[通俗易懂]

       我们可以看到抽象类的表示方法为abstract class Compmonent,在抽象类中的方法,可以是抽象的,也可以是具体的,如果是抽象方法的话,在子类中必须重写抽象方法。

       在这里也体现了构造函数的概念,个人理解重载和构造函数密不可分。这些是面向对象的具体知识,接下来会一一介绍。

软考中的设计模式[通俗易懂]

        在.net中子类继承父类,继承用“:”来表示,在Java中则用extends代替,这也就是.net和Java的不同之处。同样,实现接口在.net中也用“:”来表示,在Java中则用implements。

       在子类Leaf中,也体现了对抽象方法的重写,简单的说,重写就是对方法内具体内容的重新编写。

接下来我们看聚合关系

Composite类

软考中的设计模式[通俗易懂]

一般情况下,聚合关系是一种一对多的关系,所以在一的类中声明集合来存放聚合的类,体现了聚合关系。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/105716.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java设计模式之行为型:命令模式

    Java设计模式之行为型:命令模式

    2021年10月4日
  • Java中常用的设计模式

    Java中常用的设计模式文章转载借鉴:http://blog.csdn.net/zhangerqing一、什么是设计模式设计模式(Designpattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块…

    2022年7月8日
  • ❤️设计模式肝完了,还挺全!腾讯和阿里的offer已拿!❤️

    ❤️设计模式肝完了,还挺全!腾讯和阿里的offer已拿!❤️设计模式肝完了,还挺全!腾讯和阿里的offer已拿!金九银十已经来了,挺近大厂最好的机会已经来了!如果你是要找工作的,一定要抓住这个机会!前面已经整理了很多的面试资料:1,❤️爆肝!整理了一周的Spring面试大全【含答案】,吊打Java面试官【建议收藏】!❤️2,❤️肝完了,一天掌握数据结构和算法面试题,吊打面试官,建议收藏❤️3,❤️集合很简单?开什么玩笑?肝了一周,全是精华,万字讲解!面试再不怕集合问题了!!!❤️4,肝完了,总结了SpringBoot与缓存的知识点,快速掌

    2022年6月10日
  • JAVA设计模式初探之装饰者模式

    这个模式花费了挺长时间,开始有点难理解,其实就是定义:动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活。设计初衷:通常可以使用继承来实现功能的拓展,如果这些需要拓展的功能的种类很繁多,那么势必生成很多子类,增加系统的复杂性,同时,使用继承实现功能拓展,我们必须可预见这些拓展功能,这些功能是编译时就确定了,是静态的。…

    2022年3月11日
  • Java设计模式之模板方法模式(Template Method)

    本文属于23种设计模式系列,介绍的是模板方法模式。

    2022年3月11日
  • Java设计模式之观察者模式

    本文继续介绍23种设计模式系列。介绍的是观察者模式。

    2022年3月11日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号