马上要准备面试了,特总结了一下设计模式....
感觉默认编辑器很low 用好一点的,我可以写一个图片上传FDFS....
有些是略的....或者没来得及
1.桥接模式
就是我们写一个接口,然后写一个抽象桥,里面要有接口的引用(私有的),和传入接口实现类set的方法
然后实现接口有的方法,用接口的引用调用方法
然后我们写该接口的n个实现类,然后new实现类,把对象(调用set方法)传进去,那么我们调用接口的方法,就是调用的传入的接口实现类的实现
如果不set,空指针
鄙人感觉没啥用,不如装饰者模式
2.外观模式
整一个类把所有的可能无法用继承描述的装里面,调用方法
如计算机={cup,GTX1080Ti,16GDDR4...}
计算机开机() ={ cpu开机() GTX1080Ti开机()....}
3.策略模式
策略模式的决定权在用户,系统本身提供不同算法的实现,新增或者删除算法,对各种算法做封装。因此,策略模式多用在算法决策系统中,外部用户只需要决定用哪个算 法即可。
我们可能在程序中更加直接:我们不实现,给你值和规则,你喜欢怎么做都可以.只要不异常
4.模版模式
一个抽象类中,有一个主方法,再定义1..n个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调 用.
案例中是设置一个final A(int)方法 然后设置一个可重写的A(OBJ重载)的方法,然后final中调用抽象的方法(重写的子类实例化后重写掉的方法),
这就是模版模式
抽象类+继承关系
5.观察者模式
这个模式的含义是,我在观察者子类操作一个方法,可以批量调用观察者的定义的容器中包含的被观察这的指定方法,这个方法名字不能改,但是实现是随心所欲的.
首先我们需要一个接口
public interface 被观察的人{
通知();
}
n个实现.....
public interface 观察者接口{
add
del
集体通知
我要做什么
}
public abs 观察者的抽象实现 impl 观察者接口{
有一个线程安全的集合
add(Obj^被观察的人){添被加观察的人}
del(obj^被观察的人){删除加观察的人}
通知(){
把所有在被观察的人接口的实现类的通知方法都调一遍
}
abs 我要做什么
}
一个类 继承 观察者的抽象实现
重写我要做什么(){
我可以通知可以不通知
我通知是调用每个被观察的人接口特定的实现方法
}
6.迭代器模式(Iterator)
这个模式来说
A接口的方法中需要调用B接口方法的功能
一是需要遍历的对象,即聚集对象,二是迭代器对象,用于对聚集对象进行遍历访问。
7.命令模式
这个主要的意义就是解耦和
命令是一个接口,
public interface 命令{
执行命令();
}
我随便实现命令一下,使用构造方法传入一个士兵
执行命令(士兵OBJ){ ------------->这里用那个接口和抽象类弄复杂一点更好
士兵OBJ.sleep();
}
我是领导
使用构造方法传入一个实现好的命令
我使用一个方法(){
命令立刻执行
}
这样的好处是:我命令随意传其实现类,因为我领导中定义的命令是接口 --->领导与命令解耦
士兵如果也用接口定义比如说People 那么,也会完成解耦
8.备忘录模式
就是有3个类
A
B 笔记本中的纸
C 笔记本
A 中要有创建纸的方法,和读取纸中内容的方法
B 中要有存储指定内容的变量还要有get/set方法
C 相当于笔记本,要有存储笔记本纸的变量和对应变量的方法
创建笔记本的过程中传入笔记本的页,
if(A要恢复备份的值){
调用A中的读取纸中内容的方法(笔记本纸){
笔记本纸.getvalue
}
}