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

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

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

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

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

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)
上一篇 2022年4月25日 上午6:40
下一篇 2022年4月25日 上午7:00


相关推荐

  • Java设计模式之责任链模式、职责链模式「建议收藏」

    继续介绍23种设计模式系列,本文介绍的是职责链模式。

    2022年3月11日
    39
  • 深入理解设计模式之建造者模式

    深入理解设计模式之建造者模式老大突然拉住我,喜滋滋地告诉我:“公司很满意我们做的模型,又签订了一个合同,把奔驰、宝马的车辆模型都交给我们公司制作了,不过这次额外增加了一个新需求:汽车的启动、停止、喇叭声音、引擎声音都由客户自己控制,想什么顺序就什么顺序”那我们开始设计,来看一下类图:类图比较简单,在CarModel中我们定义了一个setSequence方法,车辆模型的这几个动作要如何排布,是在这个ArrayList中定义的。然后run()方法根据sequence定义的顺序完成指定的顺序动作。我们来看模型抽象类代码:

    2025年6月25日
    10
  • 十四、迭代器模式—— 一个一个的遍历 #和设计模式一起旅行#「建议收藏」

    套路要深…故事背景今天要介绍一下迭代器,首先简单说明一下,什么是迭代器,为什么要使用迭代器。 迭代器(Iterate) 的意思就是反复做某件事情。那为什么要反复做某件事情呢,比如我们有个容器里面装了很好东西(这些东西都是同一类型的),要从容器中取每一个东西出来,就要反复去做一个取出的事情。故事主角迭代器模式 : 提供一种方法顺序访问一个聚合对象中的各个元素,而…

    2022年2月27日
    40
  • Java设计模式之创建型:原型模式

    Java设计模式之创建型:原型模式

    2021年10月4日
    39
  • 23种设计模式汇总整理

    设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式结构型模式,共七种:适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两类:并发型模式和线程池模式。…

    2022年3月11日
    39
  • 设计模式之享元(flyweight)模式

    现在在大力推行节约型社会,“浪费可耻,节俭光荣”。在软件系统中,有时候也会存在资源浪费的情况,例如,在计算机内存中存储了多个完全相同或者非常相似的对象,如果这些对象的数量太多将导致系统运行代价过高。那

    2021年12月28日
    53

发表回复

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

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