- 博客(14)
- 资源 (1)
- 收藏
- 关注
原创 实训总结1
今天主要学习了maven和spring的一些概述以及如何IDEA里面配置并使用他们。写这篇博客主要是为了和像我一个的技术小白分享一下今天的学习成果。1.maven1.1maven介绍 通过今天的学习,我对于Maven的印象就是一个和IDE差不多,在不知道maven之前,在开发项目中如果需要使用到外部的jar时,会是一个很头疼的事,因为你需要去官网下载jar,然后导入到项目中,同时还要配置一下路径等等。maven就是来帮你做这些事情的,你只需要在他的配置文件里面按照格式写好就行了。 1.2maven下
2020-07-15 20:05:22 365
原创 可维护性软件设计原则(SOLID)
单一责任原则(SRP)意思是每一个接口/类的功能比较单一,不要把多个功能聚集到一个类中。开放-封闭原则(OCP)意思是将模块中可能需要拓展的部分分离出来,对这一部分在定义一个模块,当需求发生变化的时候就可以只修改这个模块而不需要更改整个大的模块。里式替换原则(LSP)软件构造最常用的原则了,子类需要满足子类型的要求,可以理解为父类能做的事子类都要能做。依赖转置原则(DIP)利用接口来完成不同模块之间的交互而不是接口。当某一个模块需要利用另一个模块的功能时,都是通过对接口的调用实..
2020-07-07 20:48:25 1295
原创 工厂方法模式和抽象工厂模式
工厂方法模式如果你设计了一个接口,又为接口设计了很多实现类,为了让用户面对的是这个接口编程,而不用去理解实现类,这就产生了一个问题,用户编程的时候不能直接new一个接口吧,肯定还是要构造一个实现类的对象。工厂方法的目的就是将这部分职责分离出来,不让用户自己去完成这部分任务。工厂方法在Java中的实现非常的简单,一般有两种方式:直接在接口中定义静态方法,返回一个实现类的对象;再定义一个接口,实现类,然后返回不同的实现类。抽象工厂模式上面的工厂方法面对的某一个接口,里面的实现类我不想暴露出去;抽象工厂.
2020-07-07 19:26:50 146
原创 迭代器模式
当你设计了一个类,这个类里面存储了大量的数据,这时候你可以为你的类提供一个方法来访问这些数据,Java提供了一个规范就是迭代器模式。具体实现如下:有三步:接口继承Iterable完成一个Iterator的实现类实现类实现Iterable中的Iterator方法,返回设计的Iterator的实现类。Iterator实现类通常需要实现两个方法,hasNext和next。...
2020-07-07 14:25:51 352
原创 模板模式
假设你向某人请教到了组装一台电脑的方法,这个就相当于一个模板,他告诉你组装一台电脑需要什么——主板、显卡,网卡,键盘等,还有组装的方式。但是光这些是没有用的,因为里面没有实质性的东西,你可能要用corei9的cpu,rtx2080ti的显卡,这些东西都是需要你自己来填充的,填充的过程就是你使用模板模式需要做的工作。还有一个更好的例子就是PPT模板,相信在初接触PPT的时候用了不少吧。但是模板模式的适用返回比较小,现在的电脑大多是按照一个标准来的,所以有统一的模板,但是软件设计要面对千奇百怪的应用环境,找到
2020-07-07 14:10:47 72
原创 策略模式
可以将策略理解成程序中解决问题的一种算法,采用策略模式设计软件不会改变类的结构,但是类中方法的具体实现会根据你选择什么策略而发生变化。策略模式非常好理解,你要设计一个类,这个类中有一个方法会对数据进行排序,排序的算法有很多,不同的排序算法对不同类型的数据的代价是不一样的。比如你的类可以面临两种不同的数据,一种是数据之间的波动不是很大,并且整体呈上升的,对于这种数据使用插入法会更好些。但是有些数据比较乱,这时候你可能更想使用快排。假设客户端可以控制数据的类型,那么他就如果可以根据不同的数据使用不同的算法就好
2020-07-07 13:58:52 73
原创 外观模式
外观模式一般用于设计一个可复用的软件。当你设计了很多相关的接口,他们之间联系起来就是一个API,外界可以访问里面的每一个接口,但是这需要客户端对你的API很了解才行,但是客户端是很懒的,他们只想用现成的,你可以将一些比较常用的方法封装在一起形成一个接口,客户端可以通过这些方法访问你的API,这样他就不需要自己去设计代码了。外观模式的架构大概就是如下图所示:客户端面对的是一个包含了很多使用这个子系统的功能的接口,然后接口的实现类中使用了子系统里面提供的功能,意思就是把如果适合这些功能的任务交给了外观接口
2020-07-07 13:46:35 72
原创 装饰器模式
装饰器模式一般用于设计一个复用类。首先要明白装饰器模式适用于什么情况下,装饰器模式是指对一个已经设计好的类,现在我想要给他增加一些功能,但是我又不会改变他的结构。这种情况下适用装饰器模式是非常好的一种选择。我们通过一个非常常见的例子来理解装饰器模式:现在你有一个类(Stack),他里面有一个list用于存储栈上的数据,一个int变量用于指向栈顶,有一个put,一个pop,这样一个简单的栈数据结构就形成了。public interface Stack{ public void put(Integer
2020-07-07 11:32:04 96
原创 适配器模式
适配器模式适用于当你想要使用某个类或者接口的时候,但是他所提供的方法和你的方法不能直接吻合,有一种做法是在你的代码里面去适配,通过修改参数和返回值的值,但是这样的做法会导致代码变得非常的冗余,后期修改起来也十分的不方便。于是就有了适配器模式,通俗的说就是把适配这部分工作放出去交给一个专门用于适配的接口/类。我们举一个例子,你设计的某个类中的方法是这样的public void draw(int x,int y,int length),这个方法是以(x,y)为左下顶点画一个边长为length的正方形,你不想编
2020-07-07 10:54:29 92
原创 设计一个可复用的类(行为子类型)
行为子类型是一个可复用的类所具备的重要性质,这篇文章主要介绍一下行为子类型和Java中关于泛型的子类型。行为子类型Java中一个非常重要的技术就是继承,子类可以通过继承父类获得父类的方法和字段。一般来说,通过继承关系得到的子类是父类的一个更加具体的描述,我想这就是子类型的由来。我们可以通过以访问父类型的方式来访问子类型而不会得到不一样的结果。行为子类型需要满足下面几个性质:1.1子类型可以增加方法,但是不可删。1.2子类型需要实现抽象方法。1.3子类型不能具有更强的前置条件。1.4子类型不能
2020-07-06 18:00:56 309
原创 设计一个ADT
ADT是对现实中事物的一种抽象,我对ADT的理解是他有两层,一个是数据层、另一个是操作层。换言之就是外界通过操作层的方法使用数据层的内容。就好比我要设计一个可以喝水的人的ADT,我需要设计一个嘴作为ADT的数据,然后在设计一个能够让嘴去喝水的方法。我们从设计一个无向图的ADT来理解如何设计一个ADT。假设我们现在要设计一个无向图的ADT,他要能够实现创建、增删节点/边,打印图功能。分析用户要求通过分析用户要求,我们可以得到,我们设计了一款可变的ADT,需要有一个构造方法、增删节点/边的方法,打印图
2020-07-06 15:58:33 930
原创 Git小结
Git学习总结Git作为一个非常重要且好用的软件版本控制系统,是每一个程序员必须掌握的一项技术。Git常用命令git add [文件名]:将没有添加跟踪的文件添加跟踪并提交到暂存区中;添加跟踪并修改的文件提交到暂存区中。git commit:整合暂存区中的文件生成一个commit对象添加到版本图中。git status:查看工作目录中所有文件的状态,包括没有被跟踪、跟踪没有发生修改、跟踪并发生修改。git reset [文件名]:将已经提交到暂存区中的文件取消提交,相当于对add的一次撤销。
2020-07-05 23:36:45 125
原创 软件构造三维度、八视图
软件构造不是简单的写完源代码,能够成功运行就可。一般通过三维度、八视图的方法来认识软件构造。软件构造的三个维度:按阶段分:build-time / run-time;按动态性分:moment / period;按构造对象分:code-level / component-level。三维度、八视图的总图:build-time,moment,code-level这里面涉及到三个相...
2020-04-20 22:59:36 879
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人