Seni Bina Bersih & Corak Reka Bentuk dalam Amalan · Pelajaran

Pengasingan Antara Muka dalam Amalan

Gunakan Prinsip Pengasingan Antara Muka untuk mencipta antara muka yang ringkas dan khusus, sambil mengelakkan antara muka besar yang memaksa klien bergantung pada kaedah yang tidak digunakannya.

Pelajaran 2 daripada 411 langkah

Pengasingan Antara Muka dalam Amalan 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.

Apakah itu ISP?

Selamat datang ke Prinsip Pengasingan Antara Muka (ISP)! Prinsip ini ialah salah satu daripada lima prinsip SOLID dalam reka bentuk berorientasikan objek.

Pada asasnya, ISP menyatakan bahawa klien tidak sepatutnya dipaksa bergantung pada antara muka yang tidak digunakannya. Dalam istilah yang lebih mudah, jangan paksa kelas melaksanakan kaedah yang tidak diperlukannya.

Masalahnya: Antara Muka Terlalu Besar

'Antara muka terlalu besar' ialah antara muka yang mengandungi terlalu banyak kaedah, dan sesetengahnya tidak berkaitan dengan kelas tertentu yang melaksanakannya.

Apabila sesuatu kelas melaksanakan antara muka yang terlalu besar, kelas itu dipaksa menyediakan pelaksanaan untuk semua kaedah, termasuk kaedah yang tidak digunakannya. Hal ini sering menghasilkan badan kaedah yang kosong atau sekadar tempat letak, yang merupakan petanda reka bentuk kod yang kurang baik.

Contoh Antara Muka Terlalu Besar

Pertimbangkan antara muka IWorker umum. Walaupun pekerja manusia mungkin melakukan semua tindakan ini, pekerja robot mungkin tidak makan atau tidur. Mari lihat masalah yang timbul.

interface IWorker {
  void work();
  void eat();
  void sleep();
  void manageTeam();
}

class Robot implements IWorker {
  @Override
  public void work() {
    System.out.println("Robot working...");
  }
  @Override
  public void eat() {
    // Robots don't eat, forced to implement
    System.out.println("Robot can't eat.");
  }
  @Override
  public void sleep() {
    // Robots don't sleep, forced to implement
    System.out.println("Robot can't sleep.");
  }
  @Override
  public void manageTeam() {
    // Not all robots manage teams
    System.out.println("Robot can't manage team.");
  }
}

public class Main {
  public static void main(String[] args) {
    Robot robot = new Robot();
    robot.work();
    robot.eat(); // This call is meaningless for a robot
  }
}

Akibat Antara Muka Terlalu Besar

Seperti yang dilihat dalam contoh Robot, pelaksanaan antara muka yang terlalu besar membawa kepada beberapa masalah:

  • Petanda Kod yang Kurang Baik: Pelaksanaan kaedah yang kosong atau sekadar tempat letak.
  • Kod Rapuh: Perubahan pada antara muka (contohnya, menambah kaedah baharu) mungkin memaksa klien yang tidak berkaitan mengemas kini kodnya.
  • Kohesi Berkurang: Antara muka mempunyai terlalu banyak tanggungjawab, lalu menjadi kurang fokus.
  • Gandingan Bertambah: Klien digandingkan dengan kaedah yang tidak digunakannya, menyebabkan sistem lebih sukar diselenggara dan diuji.

Penyelesaian: Mengasingkan Antara Muka

Prinsip Pengasingan Antara Muka mencadangkan supaya antara muka besar yang 'terlalu besar' dipecahkan kepada antara muka yang lebih kecil dan khusus.

Setiap klien (kelas) kemudiannya hanya melaksanakan antara muka yang berkaitan dengan tanggungjawab khususnya. Ini memastikan klien tidak dipaksa bergantung pada kaedah yang tidak diperlukannya.

ISP dalam Tindakan: Kod yang Diubah Suai

Mari ubah suai contoh IWorker kita dengan mencipta antara muka yang lebih kecil dan khusus mengikut peranan. Kini, setiap jenis pekerja boleh melaksanakan hanya perkara yang benar-benar diperlukannya.

interface IWorkable {
  void work();
}

interface IEatable {
  void eat();
}

interface ISleepable {
  void sleep();
}

interface IManager extends IWorkable { // Managers also work
  void manageTeam();
}

class HumanWorker implements IManager, IEatable, ISleepable {
  @Override
  public void work() { System.out.println("Human working..."); }
  @Override
  public void eat() { System.out.println("Human eating..."); }
  @Override
  public void sleep() { System.out.println("Human sleeping..."); }
  @Override
  public void manageTeam() { System.out.println("Human managing team..."); }
}

class RobotWorker implements IWorkable { // Only works
  @Override
  public void work() { System.out.println("Robot working..."); }
}

public class Main {
  public static void main(String[] args) {
    HumanWorker human = new HumanWorker();
    human.work();
    RobotWorker robot = new RobotWorker();
    robot.work();
    // robot.eat(); // This would now be a compile error, as expected!
  }
}

Faedah Menggunakan ISP

Penggunaan ISP membawa beberapa kelebihan penting kepada reka bentuk perisian anda:

  • Kohesi Dipertingkat: Antara muka menjadi lebih fokus dan mewakili satu tanggungjawab yang jelas.
  • Gandingan Berkurang: Klien hanya bergantung pada kaedah khusus yang diperlukannya, lalu menghasilkan gandingan yang lebih longgar.
  • Penyelenggaraan Lebih Mudah: Perubahan pada satu antara muka tidak menjejaskan klien yang tidak melaksanakannya.
  • Kebolehujian Lebih Baik: Antara muka yang lebih kecil dan fokus lebih mudah digantikan dengan objek olok-olok serta diuji secara berasingan.
  • Fleksibiliti: Fungsi baharu boleh ditambah dengan mencipta antara muka baharu atau melanjutkan antara muka kecil yang sedia ada tanpa menjejaskan klien sedia ada.

ISP dalam Amalan

ISP amat berguna dalam sistem yang mempunyai jenis klien yang pelbagai atau fungsi yang kompleks:

  • Sistem Berasaskan Peranan: Peranan pengguna yang berbeza (contohnya, Pentadbir, Penyunting, Pelihat) mungkin berinteraksi dengan bahagian sistem yang berbeza, dan setiap satunya memerlukan antara muka khusus.
  • Reka Bentuk API: Semasa mereka bentuk API, sediakan titik akhir atau antara muka khusus untuk aplikasi klien yang berbeza (contohnya, aplikasi mudah alih berbanding aplikasi web).
  • Seni Bina Pemalam: Pemalam hanya boleh melaksanakan antara muka khusus yang mentakrifkan fungsi yang disediakannya kepada aplikasi utama.

ISP berbanding SRP: Pandangan Ringkas

Walaupun ISP dan Prinsip Tanggungjawab Tunggal (SRP) kedua-duanya menggalakkan reka bentuk yang fokus, kedua-duanya beroperasi pada tahap yang berbeza:

  • SRP (Prinsip Tanggungjawab Tunggal): Berfokus pada kelas, dengan menyatakan bahawa sesuatu kelas sepatutnya hanya mempunyai satu sebab untuk berubah.
  • ISP (Prinsip Pengasingan Antara Muka): Berfokus pada antara muka dan klien, bagi memastikan klien tidak dipaksa bergantung pada kaedah yang tidak digunakannya.

Kedua-duanya sering digunakan bersama. Penggunaan SRP pada kelas secara semula jadi boleh menghasilkan antara muka yang lebih jelas, manakala penggunaan ISP boleh membantu kelas mematuhi SRP dengan lebih baik kerana kelas hanya melaksanakan perkara yang benar-benar berkaitan dengan tanggungjawab tunggalnya.

Semak Pemahaman Anda

Diberikan antara muka IDocumentProcessor dengan kaedah printDocument(), scanDocument(), faxDocument() dan copyDocument(), yang manakah antara berikut merupakan cara yang baik untuk menggunakan Prinsip Pengasingan Antara Muka?

Ringkasan Pelajaran

Syabas! Anda telah mempelajari Prinsip Pengasingan Antara Muka:

  • Klien tidak sepatutnya dipaksa bergantung pada antara muka yang tidak digunakannya.
  • 'Antara muka terlalu besar' membawa kepada pelaksanaan kaedah yang tidak berkaitan dan kod yang rapuh.
  • ISP menyelesaikan masalah ini dengan memecahkan antara muka besar kepada antara muka yang lebih kecil dan khusus untuk klien.
  • Ini meningkatkan kohesi, mengurangkan gandingan serta menjadikan kod lebih mudah diselenggara dan diuji.

Ingat prinsip ini untuk mereka bentuk perisian yang lebih kukuh dan fleksibel!

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 “Pengasingan Antara Muka dalam Amalan” percuma?

Ya — teks penuh “Pengasingan Antara Muka dalam Amalan” 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 “Pengasingan Antara Muka dalam Amalan”?

Gunakan Prinsip Pengasingan Antara Muka untuk mencipta antara muka yang ringkas dan khusus, sambil mengelakkan antara muka besar yang memaksa klien bergantung pada kaedah yang tidak digunakannya. 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 “Pengasingan Antara Muka dalam Amalan” 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. Mendalami Penyongsangan Kebergantungan
  2. Pengasingan Antara Muka dalam Amalan
  3. Pemfaktoran Semula dengan Corak Reka Bentuk
  4. Penguasaan Tanggungjawab Tunggal dan Terbuka-Tertutup
← Kembali ke Seni Bina Bersih & Corak Reka Bentuk dalam Amalan