Tokie skaitytojai kaip jūs padeda palaikyti MUO. Kai perkate naudodami nuorodas mūsų svetainėje, galime uždirbti filialų komisinius.
Šablono metodo kūrimo modelis leidžia apibrėžti algoritmo žingsnius viename klasės metode. Tai leidžia apriboti konkrečias programos operacijas vienu metodu.
Kiekvienas algoritmo žingsnis, kurį apibrėžia šablono metodas, yra vidinis metodas. Tačiau šablono metodas tvarko tik kai kurių vidinių metodų įgyvendinimą. Poklasiai paprastai įgyvendina vieną ar daugiau šabloninio metodo vidinių metodų.
Poklasis gali įgyvendinti abstraktų metodą, bet negali iš naujo apibrėžti algoritmo, įgyvendinto galutiniu metodu.
Kaip veikia šablono metodas
Įprastas šablono metodo modelis turės tokią struktūrą:
galutinistuštumašablono metodas(){
abstractOperation1();
abstractOperation2();konkretusOperacija1();
konkretusOperacija2();
kabliukas ();
}
Pirmas svarbus dalykas, į kurį reikia atkreipti dėmesį, yra tai, kad templateMethod() yra galutinis, todėl joks poklasis negali nepaisyti šio metodo. Kitas svarbus dalykas, į kurį reikia atkreipti dėmesį, yra trijų tipų metodai, kuriuos naudoja šabloninio metodo modelis: konkretus, abstraktus ir kabliukas.
Abstrakčioji klasė, kurioje yra šablono metodas, įgyvendina visus konkrečius metodus, o konkretūs poklasiai įgyvendina abstrakčius metodus. Kabliuko metodas paprastai nieko nedaro pagal numatytuosius nustatymus, tačiau poklasis turi galimybę prireikus nepaisyti šių metodų.
Šablonų metodo modelio įdiegimas Java
Šablono metodo modelis veikia kaip programos pagrindas. Taigi, dažnai pamatysite šį modelį programinės įrangos sistemose, kurios suteikia programų kūrimo planą.
Pavyzdžiui, galite prijungti programą prie vienos iš daugelio duomenų bazių sistemų. Prisijungimo prie duomenų bazės ir jos naudojimo veiksmai atliekami pagal panašų šabloną:
viešasabstrakčiaiklasėDuomenų bazė{
// šablono metodas
galutinistuštumaduomenų bazės šablonas(){
// abstraktūs metodai
setDBDriver();
setCredentials();// konkretus metodas
Prisijungti();// abstraktūs metodai
sukurtiDB();
setData();
readData ();// kablio metodai
if (userWantsToUpdate()) {
updateData();
}if (userWantsToDelete()) {
ištrinti duomenis ();
}// konkretus metodas
closeConnection();
}abstrakčiaituštumasetDBDriver();
abstrakčiaituštumanustatyti kredencialus();
abstrakčiaituštumasukurti DB();
abstrakčiaituštumasetData();
abstrakčiaituštumaskaityti duomenis();
abstrakčiaituštumaatnaujinti duomenis();
abstrakčiaituštumaištrinti duomenis();tuštumaPrisijungti(){
System.out.println("Prisijungiama prie duomenų bazės...");
}tuštumauždaryti ryšį(){
System.out.println("Naikinamas duomenų bazės ryšys...");
}loginisuserWantsToUpdate(){
grąžintiklaidinga;
}
loginisuserWantsToDelete(){
grąžintiklaidinga;
}
}
Šiame duomenų bazių klasės pavyzdyje naudojamas šablono metodo šablonas, kad būtų sukurtas šablonas, kurį galite naudoti su bet kuria duomenų baze. Kad galėtumėte naudoti duomenų bazę, jūsų programa turės prie jos prisijungti, o po naudojimo sunaikinti ryšį. Ši veikla paprastai yra vienoda visoms duomenų bazėms. Todėl abstrakčių duomenų bazių klasė gali įgyvendinti Prisijungti() ir closeConnection() metodus.
Kiti šablono metodo metodai skirsis priklausomai nuo duomenų bazės tipo. Pavyzdžiui, MySQL duomenų bazė saugo duomenis lentelėse, o a MongoDB duomenų bazė saugo duomenis kolekcijose. Jei norite naudoti a MySQL duomenų bazė Java, tiesiog sukurkite naują MySQL klasę, kuri praplečia duomenų bazės klasę:
viešasklasėMySQLtęsiasiDuomenų bazė{
@Nepaisyti
tuštumasetDBDriver(){
System.out.println("Renkantis MySQL tvarkyklę...");
}@Nepaisyti
tuštumanustatyti kredencialus(){
System.out.println("Nustatomi MySQL duomenų bazės kredencialai...");
}@Nepaisyti
tuštumasukurti DB(){
System.out.println("Kuriama nauja lentelė...");
}@Nepaisyti
tuštumasetData(){
System.out.println("Įterpiami duomenys į duomenų bazę...");
}@Nepaisyti
tuštumaskaityti duomenis(){
System.out.println("Gaunami duomenys iš duomenų bazės...");
}@Nepaisyti
tuštumaatnaujinti duomenis(){
System.out.println("Atnaujinami duomenys duomenų bazėje...");
}
@Nepaisyti
tuštumaištrinti duomenis(){
System.out.println("Ištrinami duomenys iš duomenų bazės...");
}
}
MySQL klasė įgyvendina visus abstrakčius duomenų bazių klasės metodus. Tai taip pat gali pakeisti kai kuriuos konkrečius metodus. Tačiau jis negali liesti duomenų bazės šablonas() metodas, kuris naudoja galutinį raktinį žodį.
viešasklasėPagrindinis{
viešasstatinistuštumapagrindinis(String[] args){
Duomenų bazė mySQLDB = naujas MySQL();
mySQLDB.databaseTemplate();
}
}
Ši pagrindinė klasė sukuria naują MySQL duomenų bazės objektą ir naudoja šablono metodą, kad imituotų, kaip programa prisijungs prie duomenų bazės. Vykdant pagrindinį metodą į konsolę išspausdinama ši išvestis:
Išvestyje pastebėsite, kad programa niekada neiškviečia updateData() ir ištrinti duomenis () metodus. Štai kodėl kablio metodai yra svarbūs. SQL duomenų bazėje norėsite kurti naujas lenteles, įterpti duomenis ir peržiūrėti duomenis. Tačiau galbūt nenorėsite atnaujinti ar ištrinti duomenų. Todėl kablio metodai suteikia poklasiams galimybę valdyti šiuos svarbius algoritmo aspektus.
@Nepaisyti
loginisuserWantsToUpdate(){
grąžintitiesa;
}
Tiesiog pridėjus aukščiau esantį kodą prie MySQL klasės, programa dabar atnaujina duomenis duomenų bazėje. Jei dar kartą paleisite pagrindinę klasę, bus rodoma ši atnaujinta išvestis:
Kaip matote, programa dabar atnaujina duomenis duomenų bazėje.
Šablono metodo dizaino modelio naudojimo pranašumai
Pagrindinis šablono metodo modelio pranašumas yra tas, kad jis skatina programinės įrangos pakartotinį naudojimą. Šis dizaino modelis taip pat palaiko efektyvų programavimą. Poklasiui tereikia įdiegti metodus, kurie yra unikalūs jo veikimui.
Be to, programa, kuri naudoja šablono metodo modelį, yra saugesnė, nes išorinės klasės negali pakeisti jos veikimo struktūros.