在这里整理一下我在写实验以及上课过程当中学到的杂七杂八没有系统总结的知识
抽象类:
抽象类在我看来比较像生物里面界门纲目科属种里面的较大的类,也就是说抽象类里面可以延展出众多的具体的类,官方定义是声明方法的存在而不去实现它的类被叫做抽象类,举个栗子
所有的点都要加属性,但是具体的属性每一种点加的都不一样,所以我们将加属性的函数抽象化
abstract void fillVertexInfo (String[] args);
将整个类也抽象化,在实现每一种具体的边时,从这个抽象类里面extends出来,完成之前没有完成的抽象方法,在抽象类里面实现了的方法也可以重写覆盖。
工厂模式
工厂模式我看到了一个将它比喻成女娲娘娘的八卦炉的例子,八卦炉里面造不同的人种,怎样快速的选择自己要造的人种,就将八卦炉做成一个工厂,当要使用的时候,就可以快速构造不同的人种对象。那么用我们实验中的例子,也就是节点和边的工厂模式
这便是演员节点的工厂模式,他与其他的节点一样,拥有同样的调用函数接口,但是每一个具体的实现都不一样,在调用的时候,如下图
Actor a = new ActorVertexFactory().createVertex(label,"Actor", args);
其他节点的生成也像这样,这种设计模式的好处在于,用户不需要知道底层是怎样具体构造这个节点的,他们只需要只要要传递哪些信息即可。它具有良好的封装性,代码结构清晰,也有利于扩展。它是典型的解耦框架。高层模块只需要知道产品的抽象类,其他的实现类都不用关心。
策略模式:
策略模式我看到的一个很好的例子是将它比喻成了孔明的锦囊妙计,在一个锦囊里面装着三个妙计,用户可以自如的调用不同的妙计。
下面我一边举例一边说:
这种方法先实现一个接口或者抽象类
然后完成接口或者从抽象类extends出来一个或者几个具体的策略
然后创建一个容器,将这些策略加到容器中
然后让用户选择策略,用下面这种方式调用
然后调用r的方法即为调用你想的那种方法
从properties文件里面获取参数信息
先写了一个param.properties文件,里面存储了所需要设置的参数
然后写了一个函数从文件中读入参数
load ( InputStream inStream),从输入流中读取属性列表(键和元素对)。通过对指定的文件进行装载来获取该文件中的所有键 - 值对。以供 get( String key) 来搜索。
然后初始化参数时,只需调用此函数即可
线程
多线程真的很复杂啊,特别是公共代码段,很容易串行,一定要记得如果一个代码段一次只能允许一个线程访问,就一定要锁定,也就是说,先给他一把“钥匙”,只有他出来了,把“钥匙”交给下一个要执行的进程才可以,程序才不会乱。线程的sleep函数很好用,可以控制程序隔一段时间执行一次指定函数,虽然用timer类也可以,但是两个的适用范围不同,线程很强大,我还需要继续学习。
不同持有对象(容器)之间的区别:
Set类:集合类型,里面存的元素不重复,加入的顺序与输出的顺序不一定相等,要让顺序相等就用LinkedSet类即可;
ArrayList类:实现List接口,类似于长度可变的动态数组,适用于大量随机访问的情况。但插入和删除的代价非常高昂;LinkedList:实现List接口,类似于链表,也提供了优化的顺序访问。在插入和删除方面代价低廉,随机访问代价较高
Queue接口:LinkedList实现了Queue接口,提供了方法支持队列的行为;
Map接口:键值对,通过键找值或者被称为字典,可以通过键找值,也可以通过值找键。