#上课笔记,仅自己看得懂
两个设计模式:
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();
}
}