最近操作系统布置了一个实验要求做一个作业调度实验,而我又刚好在学java设计模式,所以常常会在想,这个系统要用什么模式来设计呢?

策略模式是什么

首先给大家看一下该项目的类图表示

图片描述

图片描述

这里四个算法implement了一个方法接口,并且重写了他的方法。而策略类简单说就是通过一个策略接口,重写每一个策略方法来达到想实现的策略。这里不对四个算法进行详细剖析,只是来讲讲我在编写过程中遇到的问题。

问题1:

前两天看设计模式,当中讲到了原型模式,指对象的引用过程有深复制和浅复制两种。浅复制指复制后的对象会随原来被复制对象的变化而变化,深复制则不会。刚好我在写这个实验时就出现了这个问题。首先在我的作业实体类中定义了许多属性,而在我返回对象里我除了想返回作业实体类外还想返回一个List属性。代码如下

图片描述
图片描述
而我对所有进程进行初始化的时候就出现了问题。
图片描述

图中的代码是正确代码,错误的地方就在第35行注释的那一句将原来的对象clone到了JobResponse对象中,所以不管你的Jobs怎么变化,JobResponse里的job会随着变化而变化,解决方法就是新new一个对象temp,并将它set到JobResponse中

问题2:

程序写完后将前端代码打包到resource/static下的目录,跑起来后发现出现了跨域问题。

图片描述

解决方法就是要进行SpringMvc的跨域的配置,即增加一个SpringContextMVC文件,重写addCorsMappings方法,不过这里有个疑问就是为什么在本机上需要解决跨域问题,难道是因为前端封装好了跨域的解决,所以在Springboot也需要配置?

图片描述

以上就是我在编写这个实验遇到的问题和解决方法了,具体的实现结果如下,源码地址:源码

图片描述


李锴
4 声望0 粉丝