public abstract class Animal {
public abstract void eat();
}
public class Cat extends Animal {
public void eat() {
System.out.println("猫吃鱼!");
}
}
//需要猫
f = new CatFactory();
a = f.createAnimal();
a.eat();
public interface Factory {
public abstract Animal createAnimal();
}
public class CatFactory implements Factory {
public Animal createAnimal() {
return new Cat();
}
}
适配器模式(GUI)
概述:将一个类的接口转换成另外一个客户希望的接口。从而使原来不能直接调用的接口变的可以调用。
优点:让本来不适合使用的接口变得适合使用
缺点:一次只能适配一个类,使用有一定的局限性
Q:接口(方法比较多)——实现类(仅仅使用一个,也得把其他方法实现)
解决方案:接口 —— 适配器类(实现接口,仅仅空实现) —— 实现类(用哪个实现哪个)
代码案例:
/*
* 让窗体关闭
* 事件源:窗口
* 事件:对窗体的处理
* 事件处理:关闭窗口(System.exit(0))
* 事件监听
*/
/*f.addWindowListener(new WindowListener() {
public void windowOpened(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}
public void windowClosing(WindowEvent e) {
System.exit(0);
}
public void windowClosed(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
});*/
# 适配器类改进:
//设置窗体关闭
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
模块设计模式(抽象类)
概述:模版方法模式就是定义一个算法的骨架,而将具体的算法延迟到子类中来实现
优点:使用模版方法模式,在定义算法骨架的同时,可以很灵活的实现具体的算法,满足用户灵活多变的需求
缺点:如果算法骨架有修改的话,则需要修改抽象类
代码实现
public abstract class GetTime {
public long getTime(){
long startTime = System.currentTimeMillis();
code();
long endTime = System.currentTimeMillis();
return endTime-startTime;
}
public abstract void code();
}