Programavimas

Darbas su „Adapter“ dizaino modeliu

Dizaino modeliai yra pasikartojančių programinės įrangos projektavimo problemų ir sudėtingumo sprendimai. Dizaino modeliai skirstomi į kūrybinius, struktūrinius ar elgesio. Kūrybiniai modeliai naudojami kuriant ir valdant klasių egzempliorių kūrimo mechanizmą. Struktūriniai modeliai naudojami subjektų santykiams suvokti. Elgesio dizaino modeliai susiję su objektų bendradarbiavimu ir atsakomybės perdavimu.

Adapterio modelis yra konstrukcinis dizaino modelis, kuris veikia kaip tiltas tarp dviejų nesuderinamų sąsajų. Sąvoka „Adapteris“ naudojama vaizduoti objektą, leidžiantį dviem tarpusavyje nesuderinamoms sąsajoms bendrauti ir bendradarbiauti. Iš esmės „Adapter“ modelis leidžia klasėms (turinčioms nesuderinamas sąsajas) dirbti kartu ir, jei reikia, jų objektai bendrauja.

Yra tam tikrų tipų adapteriai, kurie įgyvendina tikslo ir prisitaikiusio sąsajas. Tokie adapterių tipai yra žinomi kaip dvipusiai adapteriai. Jūs taip pat turite du skirtingus adapterių tipus, būtent klasės adapterius ir objektų adapterius. Pirmasis naudoja paveldėjimą, antrasis naudoja kompoziciją, kad išspręstų jūsų dizaino nesuderinamumo problemas. Adapterio dizaino šabloną galite naudoti, kai reikia naudoti trečiosios šalies biblioteką, nesuderinamą su tipais, kuriuos turite savo programoje.

Toliau pateikiamas tipų, dalyvaujančių tipiniame „Adapter“ modelio diegime, sąrašas:

  • Taikinys
  • Adapteris
  • Adaptuotas
  • Klientas

Supraskime tai su pavyzdžiu. Tarkime, turi bendrauti du žmonės, kalbantys ir suprantantys skirtingas kalbas - vienas gali būti prancūzas, kitas - vokietis. Taigi, šie du asmenys gali kalbėti ir suprasti tik prancūziškai ir vokiškai - ne abu. Jums paprastai reikės žmogaus (vertėjo), kuris mokėtų abi šias kalbas, kad palengvintų bendravimą. Taigi, asmuo, galintis palengvinti šį bendravimą, veikia kaip adapteris.

Šis modelis patenka į struktūrinę kategoriją, nes šį modelį naudosite struktūrizuodami tipus mūsų programoje - paprastai šis modelis gali transformuoti vieną sąsają į kitą. „Keturių gauja“ apibrėžia „Adapter“ modelį kaip „Konvertuokite klasės sąsają į kitą sąsają, kurios klientai tikisi. Adapteris leidžia klasėms dirbti kartu, kurios kitaip dėl nesuderinamų sąsajų negalėtų būti“.

Dabar įsigilinkime į tam tikrą kodą. Apsvarstykite šias dvi klases.

visuomenės klasė „TargetA“

            {

vieša niekinė „DisplayA“ ()

                {

Console.WriteLine („TargetA“);

                }

            }

visuomenės klasė „TargetB“

            {

viešas negaliojantis „DisplayB“ ()

                {

Console.WriteLine („TarB“);

                }

            }

Kaip matote, šios dvi klasės yra nesuderinamos - jos taip pat neturi bendros bazės. Šis kodų sąrašas parodo, kaip atrodo adapterių klasės.

viešoji sąsaja „ITargetAdapter“

            {

negalioja „ProcessData“ ();

            }

viešosios klasės „AdapterA“: „ITargetAdapter“

            {

public TargetA targetA {get; rinkinys; }

viešas niekinis procesas ()

                 {

targetA.DisplayA ();

                 }

viešasis adapteris A („TargetA obj“)

                 {

targetA = obj;

                 }

            }

viešosios klasės „AdapterB“: „ITargetAdapter“

            {

public TargetB targetB {get; rinkinys; }

public void Procesas () {targetB.DisplayB (); }

viešasis adapteris B („TargetB obj“)

                 {

targetB = obj;

                 }

            }

Atminkite, kad abi adapterių klasės turi vieną bendrą sąsają, pavadintą „ITargetAdapter“, kurią šios klasės įgyvendina. Kiekviena iš dviejų adapterių klasių turi argumentų konstruktorių, kuris priima nuorodą į atitinkamų tikslinių klasių objektą. „ITargetAdapter“ sąsajoje yra proceso () metodo deklaracija. Šį metodą įgyvendina tiek adapterių klasės - šie metodai naudoja „Display“ (), ir atitinkamus anksčiau įdiegtų tikslinių klasių rodymo metodus.

Šis kodų sąrašas parodo, kaip galite naudoti šias adapterių klases.

klasės programa

    {

static void Main (string [] args)

        {

„ITargetAdapter“ adapteris = naujas „AdapterA“ (naujas „TargetA“ ());

adapteris. Procesas ();

adapteris = naujas AdapterB (naujas TargetB ());

adapteris. Procesas ();

Pultas.Skaitykite ();

        }

Kaip matote aukščiau pateiktame kodo fragmente, turime perduoti atitinkamos tikslinės klasės egzempliorių adapterių klasės konstruktoriui.

Pateiksiu diskusijas apie daugiau dizaino modelių savo būsimuose įrašuose čia. „Adapter“ dizaino šablonas gali būti geras pasirinkimas, kai jums reikės iškviesti seną kodą savo programose. Iš šio straipsnio galite sužinoti daugiau apie adapterio dizaino modelį.

$config[zx-auto] not found$config[zx-overlay] not found