Dezvoltarea unei soluții cu module ușor diferite pentru fiecare țară

În prezent dezvolt două soluții (prima pentru țara A, a doua pentru țara B), care sunt foarte asemănătoare. Folosesc serverul wpf, C#, mvvm, sql.

Unele dintre module sunt identice în fiecare soluție, unele dintre ele parțial diferite (ex. Unele clase au câmpuri sau metode suplimentare), iar unele sunt complet diferite (ex. Modul TVA). Pentru mine, dezvoltarea de soluții complet independente nu este cea mai bună soluție (costul de timp).

Deci, mă gândeam să creez două soluții (A și B) care vor conține numai ecranul principal în care să pregătesc interfața cu utilizatorul. Apoi, în a treia soluție (C) aș avea proiecte (= module) și le voi lega de A sau B.

Dacă modulul este identic pentru ambele versiuni - nici o problemă. Dacă este complet diferită - bine, trebuie să o dezvolt independent. Dar, întrebarea este cum de a proiecta module care sunt ușor diferite?

Ar trebui să utilizez modelul abstract de design fabrica și să pun în AbstractProduct tot ceea ce este identic și în ConcreteProducts pune câmpuri/metode suplimentare? Pentru formularele wpf nu pot folosi acest model - trebuie să dezvolt un formular pentru fiecare versiune.

Mersi.

0

1 răspunsuri

ceea ce doriți cu adevărat să utilizați este injecția de dependență.

Mai intai creezi o interfata, apoi impls-urile tale concrete implementeaza aceasta interfata pe tara.

interface ISolution
{
....
}

class CountryA : ISolution{
...
}


class CountryB : ISolution{
...
}

Apoi, înregistrați aceste interfețe la maparea impl la rădăcina compoziției.

private static IContainer ConfigureDependencies() {
            return new Container(x =>{
                x.For().Use();

            });
        }

Apoi, cereți containerului să vă dea o instanță a soluției. și vă va oferi impl corect.

Puteți face același lucru pentru CountryB.

Puteți avea cablaj auto sau legare târzie, ceva mai dinamic. și puteți comuta impls.

Aruncați o privire la structura de exemple.

0
adăugat