提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
提示:以下是本篇文章正文内容,下面案例可供参考
其实就是自己不干活,指派人干活
/** * 抽象员工 */ public interface Employee { void operator(String task); } /** * 员工A */ public class EmployeeA implements Employee { public void operator(String task) { System.out.println("员工A开始做事"+task); } } /** * 员工B */ public class EmployeeB implements Employee{ public void operator(String task) { System.out.println("员工B开始做事"+task); } } /** * 领导 */ public class Leader implements Employee{ public void operator(String task) { if("外卖".equals(task)){ new EmployeeA().operator(task); }else { new EmployeeB().operator(task); } } }由抽象类定义流程,标志final不可修改,只开放一部分接口给子类修改
代码如下(示例):
/** * 模板方法 */ public abstract class Template { public final void operation(){ first(); second(); if(isAlive()){ third(); }else { System.out.println("game over"); } } protected void third() { System.out.println("通关"); } protected boolean isAlive() { return true; } protected void second(){ System.out.println("第二关"); }; protected void first(){ System.out.println("第一关"); }; } /** * 玩家A */ public class PlayA extends Template{ @Override protected boolean isAlive() { return false; } } /** * 玩家B */ public class PlayB extends Template{ @Override protected boolean isAlive() { return true; } }该处使用的url网络请求的数据。
模板模式使用继承;桥接模式避免继承;装饰器模式继承加组合;代理模式不一定继承,例如cglib是继承,jdk是接口模式