Seni Bina Bersih & Corak Reka Bentuk dalam Amalan · Pelajaran

Corak Fasad dan Proksi

Permudahkan subsistem kompleks dengan Fasad dan kawal capaian kepada objek dengan corak Proksi.

Pelajaran 2 daripada 412 langkah

Corak Fasad dan Proksi ialah pelajaran Seni Bina Bersih & Corak Reka Bentuk dalam Amalan percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Seni Bina Bersih & Corak Reka Bentuk dalam Amalan, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Seni Bina Bersih & Corak Reka Bentuk dalam Amalan merangkumi sejumlah 4 pelajaran.

Selamat Datang ke Fasad & Proksi!

Dalam pelajaran ini, kita akan mendalami dua Corak Reka Bentuk Struktur yang berkuasa: corak Fasad dan Proksi.

Corak struktur membantu anda menggabungkan objek dan kelas menjadi struktur yang lebih besar, menjadikan sistem lebih fleksibel dan cekap.

Kita akan mempelajari cara Fasad memudahkan sistem yang kompleks dan cara Proksi mengawal akses kepada objek.

Kenali Corak Fasad

Bayangkan sebuah mesin kompleks yang mempunyai banyak butang dan tuil. Corak fasad menyediakan antara muka ringkas dan bersatu kepada sekumpulan antara muka dalam subsistem.

  • Corak ini mentakrifkan antara muka peringkat lebih tinggi yang memudahkan penggunaan subsistem.
  • Anggaplah ia sebagai panel hadapan ringkas untuk sistem yang rumit.

Matlamat utamanya adalah untuk mengurangkan kerumitan dan memisahkan klien daripada cara kerja dalaman subsistem.

Menangani Kerumitan

Tanpa Fasad, klien mungkin perlu berinteraksi dengan banyak kelas dan objek yang berbeza dalam subsistem untuk melaksanakan satu tugas.

Hal ini menyebabkan:

  • Gandingan ketat: Kod klien menjadi bergantung pada semua komponen subsistem.
  • Kerumitan meningkat: Klien perlu mengetahui terlalu banyak tentang struktur dalaman subsistem.
  • Penyelenggaraan lebih sukar: Perubahan pada bahagian dalaman subsistem mungkin merosakkan kod klien.

Cara Fasad Memudahkan

Corak Fasad memperkenalkan satu kelas Fasad yang membungkus subsistem kompleks.

Kelas Fasad:

  • Mengetahui kelas subsistem yang bertanggungjawab terhadap sesuatu permintaan.
  • Mewakilkan permintaan klien kepada objek subsistem yang sesuai.
  • Menukarkan interaksi kompleks kepada satu panggilan kaedah yang ringkas.

Klien hanya berinteraksi dengan Fasad, bukan dengan kelas subsistem secara individu.

Fasad dalam Tindakan: Teater Rumah

Mari kita lihat contoh ringkas dengan sistem teater rumah. Daripada menghidupkan TV, penguat dan pemain DVD secara berasingan, Fasad melakukan semuanya.

public class Amplifier {
  public void on() { System.out.println("Amplifier On"); }
  public void setDvd(DvdPlayer dvd) { System.out.println("Amplifier setting DVD"); }
  public void setVolume(int volume) { System.out.println("Amplifier volume " + volume); }
  public void off() { System.out.println("Amplifier Off"); }
}

public class DvdPlayer {
  public void on() { System.out.println("DVD Player On"); }
  public void play(String movie) { System.out.println("Playing movie: " + movie); }
  public void off() { System.out.println("DVD Player Off"); }
}

public class Television {
  public void on() { System.out.println("TV On"); }
  public void off() { System.out.println("TV Off"); }
}

// The Facade
public class HomeTheaterFacade {
  Amplifier amp;
  DvdPlayer dvd;
  Television tv;

  public HomeTheaterFacade(Amplifier amp, DvdPlayer dvd, Television tv) {
    this.amp = amp;
    this.dvd = dvd;
    this.tv = tv;
  }

  public void watchMovie(String movie) {
    System.out.println("Get ready to watch a movie...");
    tv.on();
    amp.on();
    amp.setDvd(dvd);
    amp.setVolume(5);
    dvd.on();
    dvd.play(movie);
  }

  public void endMovie() {
    System.out.println("Shutting down home theater...");
    dvd.off();
    amp.off();
    tv.off();
  }
}

public class Main {
  public static void main(String[] args) {
    Amplifier amp = new Amplifier();
    DvdPlayer dvd = new DvdPlayer();
    Television tv = new Television();

    HomeTheaterFacade homeTheater = new HomeTheaterFacade(amp, dvd, tv);
    homeTheater.watchMovie("Inception");
    System.out.println("---");
    homeTheater.endMovie();
  }
}

Mengapa Menggunakan Fasad?

Corak Fasad menawarkan beberapa kelebihan utama:

  • Memudahkan kod klien: Klien tidak perlu mempelajari API kompleks subsistem.
  • Memisahkan klien daripada subsistem: Mengurangkan kebergantungan, lalu menjadikan sistem lebih teguh terhadap perubahan.
  • Meningkatkan kebolehujian: Anda boleh menggunakan objek olok-olok bagi Fasad untuk menguji kod klien dengan lebih mudah.
  • Menggalakkan pelapisan: Membantu menyusun sistem kepada lapisan dengan tanggungjawab yang jelas.

Memperkenalkan Corak Proksi

Corak proksi menyediakan pengganti atau ruang letak untuk objek lain bagi mengawal akses kepadanya.

Anggaplah ia sebagai orang tengah. Daripada berkomunikasi terus dengan objek sebenar, anda berkomunikasi dengan proksinya.

Proksi boleh menambah logik tambahan sebelum atau selepas mengakses objek sebenar, seperti pemeriksaan keselamatan, pemuatan malas atau pengelogan.

Penggunaan Proksi yang Lazim

Proksi bersifat serba guna dan digunakan dalam banyak keadaan:

  • Proksi Perlindungan: Mengawal akses berdasarkan keizinan (contohnya, hanya pengguna yang disahkan boleh mengaksesnya).
  • Proksi Maya: Mencipta objek yang mahal apabila diperlukan (pemuatan malas), lalu meningkatkan prestasi.
  • Proksi Jauh: Mewakili objek yang terletak dalam ruang alamat yang berbeza (contohnya, proksi rangkaian untuk perkhidmatan jauh).
  • Proksi Pengelogan: Merekod panggilan kaedah kepada objek sebenar.

Proksi dalam Tindakan: Akses Selamat

Berikut ialah contoh Proksi Perlindungan. Seorang pengguna cuba mengakses pangkalan data sensitif. Proksi menyemak terlebih dahulu sama ada pengguna tersebut mempunyai hak pentadbir.

// Subject Interface
interface Database {
  void executeQuery(String query);
}

// Real Subject
class RealDatabase implements Database {
  public void executeQuery(String query) {
    System.out.println("Executing query: " + query);
  }
}

// Proxy
class DatabaseProxy implements Database {
  private RealDatabase realDatabase;
  private String userRole;

  public DatabaseProxy(String userRole) {
    this.userRole = userRole;
    this.realDatabase = new RealDatabase(); // Create real object if needed, or lazily
  }

  public void executeQuery(String query) {
    if (userRole.equals("ADMIN")) {
      System.out.println("Proxy: Admin access granted.");
      realDatabase.executeQuery(query);
    } else {
      System.out.println("Proxy: Access denied! Only ADMIN can execute queries.");
    }
  }
}

public class Main {
  public static void main(String[] args) {
    Database adminUser = new DatabaseProxy("ADMIN");
    adminUser.executeQuery("SELECT * FROM sensitive_data");

    System.out.println("---");

    Database regularUser = new DatabaseProxy("USER");
    regularUser.executeQuery("DELETE FROM sensitive_data");
  }
}

Mengapa Menggunakan Proksi?

Corak Proksi menawarkan manfaat yang ketara:

  • Akses Terkawal: Boleh mengehadkan atau memperluas akses kepada objek sebenar.
  • Pemulaan Malas: Menangguhkan penciptaan objek sehingga objek itu benar-benar diperlukan, sekali gus menjimatkan sumber.
  • Pengekstrakan Akses Jauh: Menyembunyikan kerumitan mengakses objek di lokasi yang berbeza.
  • Fungsi Tambahan: Boleh menyuntik pengelogan, penyimpanan cache atau pemeriksaan keselamatan tanpa mengubah objek sebenar.

Semakan Pantas: Fasad berbanding Proksi

Pertimbangkan situasi apabila anda mempunyai pustaka pemprosesan imej yang kompleks dengan berpuluh-puluh kelas dan kaedah. Anda mahu menyediakan fungsi ringkas seperti processImage(imageFile) kepada pengguna anda.

Corak reka bentuk manakah yang paling sesuai untuk mencapai pemudahan ini?

Fasad & Proksi: Rumusan Utama

Kita telah meneroka dua corak struktur yang berkuasa:

  • Corak Fasad menyediakan antara muka peringkat tinggi yang dipermudah kepada subsistem kompleks, menjadikannya lebih mudah digunakan dan mengurangkan gandingan.
  • Corak Proksi menyediakan pengganti atau ruang letak untuk objek lain bagi mengawal akses kepadanya, serta menambah logik seperti keselamatan, pemuatan malas atau pengelogan.

Kedua-dua corak ini memperkemas struktur dan kebolehselenggaraan sistem dengan mengurus kerumitan serta mengawal interaksi antara objek.

Percuma untuk bermula

Pelajari Seni Bina Bersih & Corak Reka Bentuk dalam Amalan dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
12
Pelajaran
48

Soalan Lazim

Adakah pelajaran “Corak Fasad dan Proksi” percuma?

Ya — teks penuh “Corak Fasad dan Proksi” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Seni Bina Bersih & Corak Reka Bentuk dalam Amalan, tingkat taraf kepada CoddyKit PRO. Kursus Seni Bina Bersih & Corak Reka Bentuk dalam Amalan merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Corak Fasad dan Proksi”?

Permudahkan subsistem kompleks dengan Fasad dan kawal capaian kepada objek dengan corak Proksi. Anda berlatih Seni Bina Bersih & Corak Reka Bentuk dalam Amalan menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Seni Bina Bersih & Corak Reka Bentuk dalam Amalan?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Seni Bina Bersih & Corak Reka Bentuk dalam Amalan di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Corak Fasad dan Proksi” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Seni Bina Bersih & Corak Reka Bentuk dalam Amalan ini?

Ya. Setiap pelajaran Seni Bina Bersih & Corak Reka Bentuk dalam Amalan menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Corak Penyesuai dan Penghias
  2. Corak Fasad dan Proksi
  3. Corak Gubahan dan Jambatan
  4. Corak Flyweight untuk Kecekapan Memori
← Kembali ke Seni Bina Bersih & Corak Reka Bentuk dalam Amalan