四、設計模式
1、單例模式
定義確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項
使用場景
常見的實現方式
餓漢單例模式
public class singleton
//公有的靜態函式,對外暴露獲取單例物件的介面
public static singleton getinstance()
//公有的靜態函式,對外暴露獲取單例物件的介面
public static synchronized singleton getinstance()
if (singleton == null)
//公有的靜態函式,對外暴露獲取單例物件的介面
public static singleton getinstance()
public static singleton getinstance()
2、工廠模式
定義定義乙個用於建立物件的介面,讓子類決定例項化哪個類
使用場景
public inte***ce car else if ("jeep".equals(type)) else , handler);
proxy.bookticket();
proxy.collectmoney();
proxy.signcontract();
proxy.sing();
6、命令模式
命令模式:呼叫物件與作用物件之間分離,由中介軟體來協調兩者之間的工作,如控制器
public class receiver {
public void action() {
system.out.println("*****receiver.action" );
//呼叫者、發起者
public class invoke {
private command command;//也可以通過容器list容納很多命令物件,進行批處理。資料庫底層的事務管理就是類似的結構
public invoke(command command) {
super();
this.command = command;
//業務方法,用於呼叫命令類的方法
public void call() {
command.execute();
public inte***ce command {
* 這個方法是乙個返回結果為空的方法。
* 實際專案中,可以根據需求設計多個方法
void execute();
class concretecommand implements command{
private receiver receiver;//命令的真正執行者
public concretecommand(receiver receiver) {
super();
this.receiver = receiver;
@override
public void execute() {
//命令執行前或後可以做相關的處理
receiver.action();
public class test {
public static void main(string args) {
command command = new concretecommand(new receiver());
invoke invoke = new invoke(command);
invoke.call();
設計模式面試題
參考 常用的設計模式彙總,超詳細!這個模式本身很簡單而且使用在業務較簡單的情況下。一般用於小專案或者具體產品很少擴充套件的情況 這樣工廠類才不用經常更改 它由三種角色組成 來用類圖來清晰的表示下的它們之間的關係 抽象工廠模式 先來認識下什麼是產品族 位於不同產品等級結構中,功能相關聯的產品組成的家族...
Java面試題 設計模式
單例模式 保證被建立一次,節省系統開銷。工廠模式 簡單工廠 抽象工廠 解耦 觀察者模式 定義了物件之間的一對多的依賴,這樣一來,當乙個物件改變時,它的所有的依賴者都會收到通知並 自動更新。外觀模式 提供乙個統一的介面,用來訪問子系統中的一群介面,外觀定義了乙個高層的介面,讓子系統更容易使 用。模版方...
面試題 2 設計模式
指乙個類只有乙個例項,且該類能自行建立這個例項的一種模式。例如,windows 中只能開啟乙個任務管理器,這樣可以避免因開啟多個任務管理器視窗而造成記憶體資源的浪費,或出現各個視窗顯示內容的不一致等錯誤。通過提供乙個靜態的物件instance,利用private許可權的構造方法和getinstanc...