AndFix元件化封裝

2021-09-11 13:49:44 字數 2196 閱讀 1413

###前言

為了防止框架的引入對自身專案**的入侵,我們有必要對引入的框架利用元件化的思想進行一次封裝。除了防止**入侵以外,同時也簡化了使用,實現了專案的需求。

###原理

正所謂開具一張圖,內容全靠寫,先來看一下封裝之後**的整體流程:

主要的核心思想是:

建立乙個後台的fixservice

然後請求伺服器,伺服器返回是否有patch

###封裝過程

為了防止**入侵、簡化使用,我們先來封裝乙個fixmanager,專門用來管理熱修復相關的邏輯。有了fixmanager,以後替換框架的時候,也不會影響專案的其他**了。

下面來看看fixmanager的**:

public

class

fixmanager

public

static fixmanager getinstance

() }

}return sinstance;

}public

void

init

(context context)

public

void

addpatch

(string path)

catch (exception e)

}}複製**

我們通過單例的形式對fixmanager進行封裝,這是元件化、同時也是外觀設計模式的應用。

這裡主要提供了init以及addpatch方法,分別用於初始化熱修復框架、新增patch進行熱修復。

我們的核心邏輯主要在fixservice裡面。**如下:

public

class

fixservice

extends

service}};

private basepatch mbasepatch;

@override

public ibinder onbind

(intent intent)

@override

public

void

oncreate

() @override

public

intonstartcommand

(intent intent, int flags, int startid)

private

void

init

() }

private

void

checkhaspatch

() else

}@override

public

void

onfailure

(object reasonobj)

});}

private

void

downloadpatch

() @override

public

void

onsuccess

(object responseobj)

@override

public

void

onfailure

(object reasonobj)

});}

}複製**

fixservice的封裝主要是實現了上圖的邏輯過程,主要的操作都通過handler進行統一處理。**比較簡單就不詳細介紹了,需要注意的是:在實際開發的時候,需要把網路請求、bean等**替換為自己的即可。

###在專案中使用

public

class

extends

}複製**

然後,在splashactivity裡面開啟fixservice,那麼fix邏輯就會在service中執行了。

public

class

splashactivity

extends

}, 2000);

}}複製**

###andfix的優劣

最後,我們回過頭來聊聊andfix的優劣:

andfix的優勢是:原理簡單、整合簡單、使用簡單、即時生效

andfix的不足是:只能修復方法級別的bug,限制了使用場景,例如不能進行資源、field等的修改。

關於元件封裝

1善於總結,通常乙個公司大部分專案,頁面排版型別相近,比如管理系統 1.1從布局上講 大都是上左右結構,適合用easyui做為主框架右邊主頁面用iframe巢狀 1.2從模組上講 常用元件就是 查詢,表單提交,彈出模態框,選項樹,表單驗證,tab選項卡 1.3從頁面樣式風格上講 一般就是紅色和藍色為...

Angular元件封裝

前言 在專案中我們常看到乙個頁面裡的 在很多頁面裡面用到,我們會把它封裝成乙個元件供多個頁面引用我們在頁面看到類似於下圖的標籤,就是引用的封裝好的元件 changepage event editbutton btnedit addopen addopen event,addmodal editdat...

vue 封裝元件

一 通過install 封裝 1 建立元件資料夾包含 vue檔案和對應的.js檔案 如圖 2 完成元件模板 這是乙個公共元件內容 3 在相應的js內註冊元件 list.js檔案 import mylist from list.vue const list export default list 匯入...