corak perantara


Corak Pengantara digunakan untuk mengurangkan kerumitan komunikasi antara berbilang objek dan kelas. Corak ini menyediakan kelas perantara yang biasanya mengendalikan komunikasi antara kelas yang berbeza dan menyokong gandingan longgar, menjadikan kod lebih mudah untuk dikekalkan. Model mediator ialah model tingkah laku.

Pengenalan

Niat: Gunakan objek pengantara untuk merangkum satu siri interaksi objek Pengantara membenarkan setiap objek berganding tanpa merujuk satu sama lain secara eksplisit, dan boleh secara bebas mengubah interaksi mereka.

Penyelesaian utama: Terdapat sejumlah besar hubungan antara objek, yang pasti akan menjadikan struktur sistem sangat rumit Pada masa yang sama, jika objek berubah, kita juga memerlukannya untuk menjejak dan objek yang berkaitan dan melaksanakan pemprosesan yang sepadan pada masa yang sama.

Bila hendak digunakan: Berbilang kelas digandingkan antara satu sama lain, membentuk struktur rangkaian.

Cara menyelesaikan: Asingkan struktur mesh di atas menjadi struktur bintang.

Kod kunci: Komunikasi antara objek Rakan Sekerja dirangkumkan ke dalam kelas dan dikendalikan secara berasingan.

Contoh aplikasi: 1 Sebelum China menyertai WTO, negara-negara berdagang antara satu sama lain, dan kini, negara berdagang antara satu sama lain melalui WTO. 2. Sistem penghantaran lapangan terbang. 3. Rangka kerja MVC, di mana C (pengawal) adalah pengantara antara M (model) dan V (pandangan).

Kelebihan: 1 Mengurangkan kerumitan kelas dan menukar satu-ke-banyak kepada satu-dengan-satu. 2. Penyahgandingan antara pelbagai kelas. 3. Mematuhi prinsip Dimit.

Kelemahan: Perantara akan menjadi besar dan kompleks serta sukar untuk dikekalkan.

Senario penggunaan: 1 Terdapat hubungan rujukan yang agak kompleks antara objek dalam sistem, mengakibatkan struktur pergantungan yang mengelirukan di antara mereka dan menyukarkan untuk menggunakan semula objek. 2. Saya ingin menggunakan kelas perantaraan untuk merangkum gelagat dalam berbilang kelas tanpa menghasilkan terlalu banyak subkelas.

Nota: tidak boleh digunakan apabila tanggungjawab mengelirukan.

Pelaksanaan

Kami menunjukkan corak pengantara melalui contoh bilik sembang. Dalam keadaan ini, berbilang pengguna boleh menghantar mesej ke bilik sembang dan bilik sembang memaparkan mesej kepada semua pengguna. Kami akan mencipta dua kelas ChatRoom dan Pengguna. Objek Pengguna menggunakan kaedah ChatRoom untuk berkongsi mesej mereka.

MediatorPatternDemo, kelas demo kami menggunakan objek Pengguna untuk menunjukkan komunikasi antara mereka.

mediator_pattern_uml_diagram.jpg

Langkah 1

Buat kelas perantara.

ChatRoom.java

import java.util.Date;

public class ChatRoom {
   public static void showMessage(User user, String message){
      System.out.println(new Date().toString()
         + " [" + user.getName() +"] : " + message);
   }
}

Langkah 2

Buat kelas pengguna.

User.java

public class User {
   private String name;

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }

   public User(String name){
      this.name  = name;
   }

   public void sendMessage(String message){
      ChatRoom.showMessage(this,message);
   }
}

Langkah 3

Gunakan objek User untuk menunjukkan komunikasi antara mereka.

MediatorPatternDemo.java

public class MediatorPatternDemo {
   public static void main(String[] args) {
      User robert = new User("Robert");
      User john = new User("John");

      robert.sendMessage("Hi! John!");
      john.sendMessage("Hello! Robert!");
   }
}

Langkah 4

Sahkan output.

Thu Jan 31 16:05:46 IST 2013 [Robert] : Hi! John!
Thu Jan 31 16:05:46 IST 2013 [John] : Hello! Robert!