模板设计模式和策略设计模式(Java)

#上课笔记,仅自己看得懂

两个设计模式:

1)模板设计模式

2)策略设计模式

模板设计模式

/*
 * 模板设计模式
 * 
 * 在父类的一个方法中定义一个总体的算法骨架
 * 而将某些步骤延迟到子类中,因为子类的实现细节不同
 * 
 * 注意:
 * 抽象父类提供的模板方法只是定义了一个通用的算法,
 * 其实先必须依赖子类的辅助
 * 
 * 
 * 
*/

abstract class AbstractOperateTime{
	
	
	public long getTatalTime() {
		
		long begin=System.currentTimeMillis();
		
		
		//具体的操作留给子类去做
		ooxx();
		
		long  end =System.currentTimeMillis();
		
		//
		long time =end-begin;
		
		return time;
		
	}
	
	public abstract void ooxx();
	
}
class StringOpe extends AbstractOperateTime{



@Override
public void ooxx() {
	// TODO Auto-generated method stub
	
	String string="";

	for(int i=0;i<100000;i++) {
	string +=1;
	}
}

	}
	
	
	



public class Main {
	public static void main(String[] args) {	
		
//		StringOpe sopOpe=new StringOpe();
//		System.out.println(sopOpe.StringAppend());;
		
		//total
		long time=new StringOpe().getTatalTime();
		System.out.println(time);
		
		
		
	}

}

策略设计模式

/*问题:
 * 赵云不知道哪个策略,他只知道拆
 * 
 * 
 */
 
/*
 * 什么是策略
 * 定义了不同的算法,并且之间可以互相替换
 * 策略的好处
 * 可以动态改变对象的行为
 * 策略设计原则
 * 把一个类中经常改变的的部分或可能改变的提取出来
 * 
 * 策略设计模式:高内聚,低耦合

 * 
 */



interface Straegy{
	public void operate();
	
	
}


class BackDoor implements Straegy{

	@Override
	public void operate() {
		// TODO Auto-generated method stub
		System.out.println("找乔国老帮忙,让吴国太给孙权施加压力");
	
	}
}
//求吴国太帮忙,开个绿灯
class GivenGreenlight implements Straegy{

	@Override
	public void operate() {
		// TODO Auto-generated method stub
		
		System.out.println("求吴国太帮忙,开个绿灯");
	}

}
//孙尚香断后,挡住追兵
class BolckEnemy implements Straegy{

	@Override
	public void operate() {
		// TODO Auto-generated method stub
		System.out.println("孙尚香断后,挡住追兵");
	}

}
//妙计有了,妙计放锦囊

class Context{
	
	
	private Straegy straegy;
	public Context(Straegy straegy) {
		
		this.straegy=straegy;
	}
	public void operate() {
		
		this.straegy.operate();
	}
}


public class TextDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Context context;
		System.out.println("拆第一个");
		context=new Context(new BackDoor());
		context.operate();
		System.out.println("刘备乐不思蜀");
		System.out.println("拆第二个");
		context=new Context(new GivenGreenlight());
		context.operate();
		System.out.println("刘备被追");
		System.out.println("拆第三个");
		context=new Context(new BolckEnemy());
		context.operate();
		
		
	}

}

你可能感兴趣的:(随缘记笔记)