Kas ir veidņu metodes dizaina modelis?

Kas ir veidņu metodes dizaina modelis?
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.





kā iegūt skaļu balsi no trokšņaina audio faila

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.





DIENAS VIDEO MAKEUSEOF

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:

final void templateMethod() { 
abstractOperation1();
abstractOperation2();

concreteOperation1();
concreteOperation2();

hook();
}

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:

public abstract class Database { 
// template method
final void databaseTemplate() {
// abstract methods
setDBDriver();
setCredentials();

// concrete method
connect();

// abstract methods
createDB();
setData();
readData();

// hook methods
if (userWantsToUpdate()) {
updateData();
}

if (userWantsToDelete()) {
deleteData();
}

// concrete method
closeConnection();
}

abstract void setDBDriver();
abstract void setCredentials();
abstract void createDB();
abstract void setData();
abstract void readData();
abstract void updateData();
abstract void deleteData();

void connect() {
System.out.println("Connecting to database...");
}

void closeConnection() {
System.out.println("Destroying database connection...");
}

boolean userWantsToUpdate() {
return false;
}

boolean userWantsToDelete() {
return false;
}
}

Š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:

public class MySQL extends Database { 
@Override
void setDBDriver() {
System.out.println("Selecting MySQL driver...");
}

@Override
void setCredentials() {
System.out.println("Setting MySQL database Credential...");
}

@Override
void createDB() {
System.out.println("Creating a new table...");
}

@Override
void setData() {
System.out.println("Inserting data into database...");
}

@Override
void readData() {
System.out.println("Retrieving data from database...");
}

@Override
void updateData() {
System.out.println("Updating data in database...");
}

@Override
void deleteData() {
System.out.println("Deleting data from database...");
}
}

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.

public class Main { 
public static void main(String[] args) {
Database mySQLDB = new 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:

kā savienot zilo zobu ar tālruni
  MySQL datu bāzes veidņu metode

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 
boolean userWantsToUpdate() {
return true;
}

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:

  MySQL datu bāzes veidņu metodes atjaunināšana

Kā redzat, lietojumprogramma tagad atjaunina datus datu bāzē.

Veidņu metodes dizaina modeļa izmantošanas priekšrocības

Galvenā 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.