c_template.java

来自「超好的设计模式Java事例程序」· Java 代码 · 共 61 行

JAVA
61
字号

/*
看过《恋爱三步曲》这部经典文章吗?相识、热恋、分手(Template method),
但每个步骤针对不同的情况,都有不一样的做法,这就要看你随机应变啦(具体实现); 

  模板方法模式:模板方法模式准备一个抽象类,将部分逻辑以具体方法以及
	具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。
	不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。
	先制定一个顶级逻辑框架,而将逻辑的细节留给具体的子类去实现。 
 */
 
 /*应用示例
  
使用过Spring + Hibernate开发过的人,在写DAO的时候都使用过Spring的
HibernateDaoSupport类,然后在实现的时候就可以很轻松的使用getHibernateTemplate()
方法之后就可以调用save()、delete()、update()等Hibernate的Session的操作,很简单。
  */
public class C_template{
	public static void main(String[] args) {
		LoveProcess ml=new MyLove();
		ml.fallInLove();
		ml=new YourLove();
		ml.fallInLove();
	}
}


abstract class LoveProcess {
	public abstract void meet();
	public abstract void love();
	public abstract void away();
	public final void fallInLove(){
		this.meet();
		this.love();
		this.away();
	}
}

class MyLove extends LoveProcess{
	public void meet(){
		System.out.println("偶尔的一次网聊开始了一段网恋... ...");
	}
	public void love(){
		System.out.println("死去活来,天昏地暗... ...");
	}
	public void away(){
		System.out.println("默然回首,那人却在灯火阑珊处。");
	}
}

class YourLove extends LoveProcess{
	public void meet(){
		System.out.println("父母给你们订了个娃娃亲... ...");
	}
	public void love(){
		System.out.println("你是谁,我们在一起干吗?");
	}
	public void away(){
		System.out.println("各过各的。");
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?