Tādi lasītāji kā jūs palīdz atbalstīt MUO. Veicot pirkumu, izmantojot saites mūsu vietnē, mēs varam nopelnīt filiāles komisiju.
Veidnes metodes izstrādes modelis ļauj definēt algoritma darbības vienā klases metodē. Tas ļauj ierobežot noteiktas lietojumprogrammas darbības ar vienu metodi.
Katrs algoritma solis, ko nosaka veidnes metode, ir iekšējā metode. Tomēr veidņu metode apstrādā tikai dažu tās iekšējo metožu ieviešanu. Apakšklases parasti ievieš vienu vai vairākas veidņu metodes iekšējās metodes.
Apakšklase var ieviest abstraktu metodi, taču tā nevar no jauna definēt ar galīgo metodi ieviesto algoritmu.
Kā darbojas veidņu metode
Tipiskam veidnes metodes modelim būs šāda struktūra:
galīgaisnederīgsveidnes metode(){
abstractOperation1();
abstractOperation2();konkrētaDarbība1();
konkrētaDarbība2();
āķis ();
}
Vispirms ir jāņem vērā tas, ka templateMethod() ir galīgs, tāpēc neviena apakšklase nevar ignorēt šo metodi. Vēl viena svarīga lieta, kas jāņem vērā, ir trīs veidu metodes, kuras izmanto veidņu metodes modelī: betona, abstraktā un āķa.
Abstraktā klase, kurā atrodas veidņu metode, ievieš visas tās konkrētās metodes, bet konkrētās apakšklases ievieš tās abstraktās metodes. Āķa metode parasti neko nedara pēc noklusējuma, taču apakšklasei ir iespēja vajadzības gadījumā ignorēt šīs metodes.
Veidņu metodes modeļa ieviešana Java
Veidnes metodes modelis darbojas kā lietojumprogrammas ietvars. Tātad jūs bieži redzēsit šo modeli programmatūras ietvaros, kas nodrošina lietojumprogrammu izstrādes plānu.
Piemēram, varat savienot savu lietojumprogrammu ar kādu no daudzajām datu bāzes sistēmām. Lai izveidotu savienojumu ar datu bāzi un izmantotu to, veiciet līdzīgu veidni:
publiskiabstraktsklasēDatu bāze{
// veidnes metode
galīgaisnederīgsdatu bāzes veidne(){
// abstraktās metodes
setDBDriver();
setCredentials();// betona metode
savienot ();// abstraktās metodes
izveidotDB();
setData();
lasītDati ();// āķa metodes
if (userWantsToUpdate()) {
updateData();
}if (userWantsToDelete()) {
dzēstDati();
}// betona metode
closeConnection();
}abstraktsnederīgssetDBDriver();
abstraktsnederīgssetCredentials();
abstraktsnederīgsizveidot DB();
abstraktsnederīgssetData();
abstraktsnederīgslasīt datus();
abstraktsnederīgsupdateData();
abstraktsnederīgsdzēst datus();nederīgssavienot(){
System.out.println("Notiek savienojuma izveide ar datu bāzi...");
}nederīgsaizveriet savienojumu(){
System.out.println("Notiek datu bāzes savienojuma iznīcināšana...");
}BūlauserWantsToUpdate(){
atgrieztiesviltus;
}
Būlalietotājs vēlasDzēst(){
atgrieztiesviltus;
}
}
Šajā datubāzes klases piemērā tiek izmantots veidnes metodes modelis, lai izveidotu veidni, ko varat izmantot ar jebkuru datu bāzi. Lai izmantotu datu bāzi, jūsu lietojumprogrammai būs ar to jāizveido savienojums un pēc tam savienojums jāiznīcina. Šīs darbības parasti ir vienādas visām datu bāzēm. Tāpēc abstraktā datu bāzes klase var īstenot savienot () un aizvērt savienojumu () metodes.
Citas veidņu metodes metodes atšķirsies atkarībā no datu bāzes veida. Piemēram, MySQL datu bāze datus glabā tabulās, savukārt a MongoDB datu bāze glabā datus kolekcijās. Ja vēlaties izmantot a MySQL datu bāze Java valodā, vienkārši izveidojiet jaunu MySQL klasi, kas paplašina datu bāzes klasi:
publiskiklasēMySQLpagarinaDatu bāze{
@Override
nederīgssetDBDriver(){
System.out.println("Notiek MySQL draivera atlase...");
}@Override
nederīgssetCredentials(){
System.out.println("Notiek MySQL datu bāzes akreditācijas datu iestatīšana...");
}@Override
nederīgsizveidot DB(){
System.out.println("Notiek jaunas tabulas izveide...");
}@Override
nederīgssetData(){
System.out.println("Notiek datu ievietošana datu bāzē...");
}@Override
nederīgslasīt datus(){
System.out.println("Notiek datu izgūšana no datu bāzes...");
}@Override
nederīgsupdateData(){
System.out.println("Notiek datu atjaunināšana datu bāzē...");
}
@Override
nederīgsdzēst datus(){
System.out.println("Notiek datu dzēšana no datu bāzes...");
}
}
MySQL klase īsteno visas datu bāzes klases abstraktās metodes. Tas var arī ignorēt dažas konkrētas metodes. Tomēr tas nevar pieskarties datu bāzes veidne() metodi, kas izmanto pēdējo atslēgvārdu.
publiskiklasēGalvenā{
publiskistatisksnederīgsgalvenais(String[] args){
Datu bāze mySQLDB = jauns MySQL();
mySQLDB.databaseTemplate();
}
}
Šī galvenā klase izveido jaunu MySQL datu bāzes objektu un izmanto veidnes metodi, lai modelētu lietojumprogrammas savienojumu ar datu bāzi. Palaižot galveno metodi, konsolē tiek izdrukāta šāda izvade:
Izvadē pamanīsit, ka lietojumprogramma nekad neizsauc updateData() un deleteData() metodes. Tāpēc āķa metodes ir svarīgas. SQL datu bāzē vēlaties izveidot jaunas tabulas, ievietot datus un skatīt savus datus. Tomēr jūs, iespējams, nevēlaties atjaunināt vai dzēst datus. Tāpēc āķa metodes apakšklasēm dod iespēju kontrolēt šos algoritma kritiskos aspektus.
@Override
BūlauserWantsToUpdate(){
atgrieztiestaisnība;
}
Vienkārši pievienojot iepriekš minēto kodu MySQL klasei, lietojumprogramma tagad atjaunina datus datu bāzē. Ja vēlreiz palaižat galveno klasi, tiks parādīta šāda atjaunināta izvade:
Kā redzat, lietojumprogramma tagad atjaunina datus datu bāzē.
Veidņu metodes dizaina modeļa izmantošanas priekšrocības
Liela veidņu metodes modeļa priekšrocība ir programmatūras atkārtotas izmantošanas veicināšana. Šis dizaina modelis atbalsta arī efektīvu programmēšanu. Apakšklasei ir jāievieš tikai tās darbībai unikālas metodes.
Turklāt lietojumprogramma, kas izmanto veidnes metodes modeli, ir drošāka, jo ārējās klases nevar mainīt tās darbības struktūru.