Rakan pembangunan semua tahu bahawa pembangunan back-end biasanya:
controller---servie---dao/mapper/repository🎜
🎜 Walau bagaimanapun, saya telah bertanya ramai orang, adakah mereka biasa dengan model fasad? Sesetengah orang telah bekerja selama lima tahun dan tidak tahu. 🎜🎜Hari ini, Lao Tian akan menunjukkan kepada anda mod fasad. 🎜
🎜Gambaran keseluruhan mod fasad🎜 🎜
🎜Mod muka depan (Corak Fasad), juga dipanggil mod penampilan, menyediakan antara muka bersatu untuk mengakses sekumpulan antara muka subsistem. Ciri utamanya ialah ia mentakrifkan antara muka peringkat tinggi untuk menjadikan subsistem lebih mudah digunakan, dan ia tergolong dalam corak reka bentuk struktur. 🎜🎜Bahasa Inggeris:🎜
Sediakan antara muka bersatu kepada satu set antara muka dalam asubsistem Fasad mentakrifkan antara muka peringkat lebih tinggi yang menjadikan subsistem lebih mudah digunakan
Malah, dalam kerja pengekodan harian kami, kami semua menggunakan corak muka depan secara meluas, dengan sengaja. atau tidak sengaja. Apabila modul peringkat tinggi perlu menjadualkan berbilang subsistem (lebih daripada 2 objek kelas), kami secara sedar akan mencipta kelas baharu untuk merangkum subsistem ini dan menyediakan antara muka yang diperkemas supaya modul peringkat tinggi boleh memanggil fungsi-fungsi ini dengan lebih mudah secara tidak langsung. subsistem.
Kes dalam hidup
Mengenai model fasad, terdapat banyak kes dalam kehidupan.
Kes 1: Apabila anda pergi ke bank untuk mengendalikan perniagaan, terdapat meja depan untuk menerima anda Kemudian, meja depan akan bertanya kepada anda perniagaan apa yang anda perlu lakukan, dan dia akan membawa anda melaluinya satu persatu. supaya kita tidak perlu bersiar-siar dan mencari tetingkap perniagaan yang sepadan. Kakitangan meja depan ini adalah setara dengan model fasad.
Kes 2: Bila kita bina rumah, kalau tak ada kontraktor, kena cari sendiri pekerja simen, juruelektrik, tukang hiasan dll. Tetapi jika anda mempunyai kontraktor, anda tidak perlu melakukan apa-apa tugas ini. Anda boleh memberitahu kontraktor secara langsung bahawa anda memerlukan juruelektrik untuk membaiki pendawaian. Kontraktor ini boleh difahami sebagai model fasad.
Kes 3: controller,也可以理解为门面模式,比如说获取用户账户信息,先查UserService获取用户信息,然后查UserAccountServiceMaklumat akaun pengguna yang dibangunkan oleh bahagian belakang kami.
Senario yang boleh digunakan untuk mod fasad
Dalam sistem perisian, mod fasad sesuai untuk senario aplikasi berikut.
Menyediakan antara muka yang mudah untuk akses luaran kepada modul atau subsistem yang kompleks.
Apabila anda ingin meningkatkan kebebasan subsistem.
Apabila subsistem mungkin mengalami pepijat atau masalah berkaitan prestasi disebabkan oleh sebab sementara yang tidak dapat dielakkan, antara muka peringkat tinggi boleh disediakan melalui mod fasad untuk mengasingkan interaksi langsung antara klien dan subsistem untuk mengelakkan pencemaran kod. .
Senario perniagaan: Kini anda perlu memanggil kaedah masing-masing bagi tiga perkhidmatan:
public class ServiceA {
public void doA(){
System.out.println("do ServiceA");
}
}
public class ServiceB {
public void doB(){
System.out.println("do ServiceB");
}
}
public class ServiceC {
public void doC(){
System.out.println("do ServiceC");
}
}
Salin selepas log masuk
Apabila mod fasad tidak diperkenalkan, pelanggan memanggilnya seperti ini:
public class Client {
public static void main(String[] args) {
ServiceA serviceA=new ServiceA();
ServiceB serviceB=new ServiceB();
ServiceC serviceC=new ServiceC();
serviceA.doA();
serviceB.doB();
serviceC.doC();
}
}
Salin selepas log masuk
Setiap kali, pelanggan perlu mencipta banyak objek perkhidmatan. Jika terdapat banyak perkhidmatan yang terlibat, tidakkah kod ini menjadi janggal? Akan ada banyak kod berulang. Hasil berjalan
do ServiceA
do ServiceB
do ServiceC
Salin selepas log masuk
Salin selepas log masuk
Jom sertai sekarang
:
public class Facade {
//是不是很像我们controller里注入各种service?
private ServiceA serviceA = new ServiceA();
private ServiceB serviceB = new ServiceB();
private ServiceC serviceC = new ServiceC();
public void doA() {
serviceA.doA();
}
public void doB() {
serviceB.doB();
}
public void doC() {
serviceC.doC();
}
}
Salin selepas log masuk
Pelanggan menjadi:
public class Client {
public static void main(String[] args) {
//轻轻松松的搞定,只需要创建门面这个对象即可
Facade facade=new Facade();
facade.doA();
facade.doB();
facade.doC();
}
}
Salin selepas log masuk
Hasil larian:
do ServiceA
do ServiceB
do ServiceC
Salin selepas log masuk
Salin selepas log masuk
Facade mode UML diagram
门面模式
Digabungkan dengan UML ini rajah, lebih mudah untuk memahami corak fasad apabila menyemak kes kakitangan meja depan bank dan kontraktor.
Watak dalam mod fasad
Atas ialah kandungan terperinci Saya telah bekerja selama lima tahun dan saya masih tidak memahami model fasad!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn