ازاي تعمل interface في dart
عشان تعمل interface بلغة زي السي شارب بتكتب
interface <interface_name>
وتكتب ت declare methods فيه،
بس dart مافيهاش interface keyword، يبقي ايه الحل ؟ تعالي اقولك ...
ال interface ببساطه هو اللي بيقول ال class ده مطلوب منه ايه بغض النظر عن هيتعمل ازاي، تقدر تقول انه زي مديرك في الشغل بيقولك انا عايزك تعمل كذا، بس تعملها ازاي، دي بتاعتك انت، انت حر، كده كده هتعملها.
تعالي تطبق ده عندنا، مثلا انا عايز احدد ان ال class اللي هيجيب الداتا بتاعه ال authentication
مسئول قدامي انه يعمل login،
بغض النظر عن هيستخدم http او dio المهم عندي انه يعمل كده وانت عشان شاطر وعارف انك لازم تكتب كود يكون flexible معاك ويكون loose coupling
لازم هنا تستخدم ال interface
او ما يسمي بال abstraction.
وده بيتم في دارت من خلال keyword
اسمها abstract
بتحطها قبل كلمة class
وتبدأ تقول انت عايز ال classes
اللي هتورث من ال interface
ده تعمل ايه، تعالي نطبق علي المثال اللي قولناه
هنا هعين مسئول اسمه AuthAPI وهقوله مسؤليتك هتقول للي تحتيك يعملوا login
abstact class AuthAPI{
login();
}
انا قررت استخدم http فقول عامل class اسمه httpAuthCall والكلاس ده هيعمل implement
لل AuthAPI
class HttpAuthCall implements AuthAPI{
@override
login(){ //my code using http pub}
طيب جيت بعدها بفتره لقيت ان ال dio فهل انا لسه هدخل اعدل في الكلاس بتاعي ؟ بكل بساطه انت تعمل كلاس جديد وتسمية مثلا DioAuthCall
وتعمل implement لل AuthAPI
انت هنا من غير ما تاخد بالك طبقت
Open/Closed principle
كتبت clean code وده هيساعدك بعد كده في فانك تطبق ال dependency inversion principle و dependency injection
خليك فاكر ان عشان تعمل interface في دارت لازم الحاجتين دول
abstract و implement
#منقول
Post #1906
3.22K
- ❤ 18
- 👍 5