模板模式
1,父类抽象类,模板方法父类控制
2,子类继承类,基础方法子类实现
3,父类加钩子,模式显完美
public static abstract class Father{
private boolean flag = false;
//钩子方法
public void setFlag(boolean b){
flag = b;
}
//基础方法
public abstract void base();
//模板方法
public final void template(){
System.out.println("父类抽象类,模板方法父类控制");
base();
if(flag){
System.out.println("钩子方法显完美");
}
}
}
public static class Sun extends Father{
@Override
public void base() {
System.out.println("子类继承类,基础方法子类实现");
}
}
public static void main(String[] args) {
Father f = new Sun();
f.template();
System.out.println("========");
f.setFlag(true);
f.template();
}
代理模式、状态模式
1、抽象角色,约束业务方法;
2、真实角色,实现抽象角色;
3、代理角色,实现抽象角色,引入真实角色做属性,附加自己的操作;
4、代理模式单实现,状态模式多实现。
/**
* 抽象角色,约束业务方法;
*/
public interface IProxy{
void f();
}
/**
* 真实角色,实现抽象角色;
*/
public class Proxyimpl implements IProxy{
@Override
public void f() {
System.out.println("xxxx");
}
}
/**
*代理角色,实现抽象角色,引入真实角色做属性,附加自己的操作;
*/
public class Proxy implements IProxy{
IProxy p = new Proxyimpl();
@Override
public void f() {
p.f();
System.out.println("oooo");
}
}