任何做網(wǎng)站如何進行網(wǎng)站性能優(yōu)化?
面試和看源碼。
談到設計模式:
1、解決了什么問題?
2、怎么寫?
模板方法設計模式解決了什么問題?
解決方法中存在重復代碼的問題。
寫法:
1)定義一個抽象類:
2)在里面定義兩個方法:
1> 一個是模板方法,把相同的代碼放進去;
2> 一個是抽象方法,具體實現(xiàn)交給子類完成;
People類:
package cn.ensource.d6_abstact_template;public abstract class People {// 設計模板方法設計模式// 1. 定義一個模板方法出來public void write() {System.out.println("====我的爸爸====");System.out.println("我的爸爸好牛啊~");
// System.out.println("我的爸爸特別牛,開車都不開紅綠燈!");// 模板方法其實也不清楚正文部分到底應該是怎么寫?但是它知道子類必須寫的。System.out.println(writeMain());System.out.println("有這樣的爸爸太好了!");}// 3. 設計一個抽象方法,具體的實現(xiàn)交給子類來完成public abstract String writeMain();
}
Teacher類:
package cn.ensource.d6_abstact_template;public class Teacher extends People {@Overridepublic String writeMain() {return "我的爸爸特別牛,讓我站在這里別走,他去買個橘子!";}
}
Student類:
package cn.ensource.d6_abstact_template;public class Teacher extends People {@Overridepublic String writeMain() {return "我的爸爸特別牛,讓我站在這里別走,他去買個橘子!";}
}
測試類:
package cn.ensource.d6_abstact_template;public class Test {public static void main(String[] args) {// 目標:搞清楚抽象類的應用場景,設計模板方法模式// 場景:學生和老師都要寫一篇作文:我的爸爸// 第一段是一樣的// 正文部分自由發(fā)揮// 最后一段也是一樣的Teacher t = new Teacher();t.write();Student s = new Student();s.write();}
}
多學一招:
建議使用final關鍵字修飾模板方法,為什么?
模板方法,禁止子類再去方法重寫,防止失效。
模板方法設計模式解決了什么問題?
解決了方法中存在重復代碼的問題。
模板方法設計模式應該怎么寫?
定義一個抽象類;
在里面定義2個方法,一個是模板方法,放相同的代碼,一個是抽象方法:具體實現(xiàn)交給子類完成。
模板方法建議使用什么關鍵字修飾?為什么?
final,不再讓子類方法重寫@override。