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

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

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

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

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

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类

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

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

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