Latest web development tutorials

command Modus

Command Mode (Command Pola) adalah pola desain data-driven, itu milik jenis model. perintah permintaan dalam bentuk paket dalam objek, dan diteruskan ke objek panggilan. Mencari objek panggilan dapat memproses objek perintah yang sesuai dan perintah dilewatkan ke objek yang tepat, yang mengeksekusi perintah.

pengenalan

Maksud: Merangkum permintaan sebagai objek, sehingga Anda dapat menggunakan permintaan yang berbeda untuk parameterisasi klien.

Terutama untuk mengatasi: dalam sistem perangkat lunak, perilaku pemohon dan perilaku biasanya mencapai hubungan erat digabungkan, tetapi beberapa situasi, seperti kebutuhan untuk melakukan perekaman, membatalkan atau mengulang, dan pengolahan transaksi lainnya, ini tak tertahankan erat perubahan desain tidak tepat.

Kapan menggunakan: Dalam beberapa kasus, seperti dengan perilaku dari "catatan, undo / redo, transaksi" dan pengobatan lainnya, perubahan tersebut tidak bisa menahan kopling ketat adalah tidak pantas.Dalam hal ini, bagaimana "perilaku pemohon" dan "perilaku pelaksana" akan decoupling? Bertindak sebagai satu set objek abstrak, kopling longgar dapat dicapai antara keduanya.

Cara untuk memperbaiki: Jalankan oleh penerima untuk memanggil pemanggil, dalam rangka: penerima pemanggil → → Command.

Kode kunci: definisi dari tiga peran: 1, menerima perintah nyata eksekusi objek 2, Command 3, benda Invoker menggunakan entri perintah

contoh aplikasi: struts 1 inti kontroler ActionServlet beraksi hanya satu, setara dengan Invoker, sementara lapisan model kelas akan aplikasi yang berbeda memiliki kelas model yang berbeda, setara dengan Command beton.

Keuntungan: 1, sistem mengurangi tingkat kopling.2, perintah baru dapat dengan mudah ditambahkan ke sistem.

Kekurangan: modus perintah dapat menyebabkan beberapa sistem memiliki terlalu banyak kelas perintah tertentu.

Penggunaan skenario: bahwa perintah lokal dapat menggunakan modus perintah, seperti: 1, GUI setiap tombol adalah perintah.2, simulasi CMD.

Catatan: Sistem harus mendukung perintah undo (Undo) dan operasi pemulihan (Redo) operasi, Anda dapat mempertimbangkan menggunakan modus perintah, lihat modus perintah diperpanjang.

realisasi

Kami pertama kali diciptakan sebagai antarmuka perintah untukOrder,dan kemudian membuat kelas permintaanStock.Entitas dan perintah kelasBuyStockSellStock,Ordemengimplementasikan antarmuka, ia akan melakukan pengolahan perintah yang sebenarnya. Dibuat sebagai kelasBrokerobjekpanggilan,yang dapat menerima pesanan dan pesanan.

objekbrokermenggunakan modus perintah, berdasarkan jenis perintah untuk menentukan objek untuk melakukan yang perintah.CommandPatternDemo,kelas demonstrasi kami menggunakan kelasBrokeruntuk menunjukkan modus perintah.

modus perintah diagram UML

Langkah 1

Membuat antarmuka perintah.

Order.java

Pesanan antarmuka publik {
   kekosongan mengeksekusi ();
}

Langkah 2

Buat kelas permintaan.

Stock.java

Stock public class {
	
   private String name = "ABC";
   private int kuantitas = 10;

   public void buy () {
      System.out.println ( "Stock [Nama:" + nama + ", 
         Jumlah: "+ kuantitas +"] membeli ");
   }
   public void sell () {
      System.out.println ( "Stock [Nama:" + nama + ", 
         Jumlah: "+ kuantitas +"] dijual ");
   }
}

Langkah 3

Buat kelas entitasOrdemengimplementasikan antarmuka.

BuyStock.java

public class BuyStock mengimplementasikan Orde {
   swasta Stock abcStock;

   publik BuyStock (Stock abcStock) {
      this.abcStock = abcStock;
   }

   public void mengeksekusi () {
      abcStock.buy ();
   }
}

SellStock.java

public class SellStock mengimplementasikan Orde {
   swasta Stock abcStock;

   SellStock publik (Stock abcStock) {
      this.abcStock = abcStock;
   }

   public void mengeksekusi () {
      abcStock.sell ();
   }
}

Langkah 4

Buat perintah panggilan kelas.

Broker.java

impor java.util.ArrayList;
import java.util.List;

   public class Broker {
   Daftar pribadi <Order> orderList = new ArrayList <Order> (); 

   public void takeOrder (order Order) {
      orderList.add (order);		
   }

   kekosongan placeOrders publik () {
      untuk (order Order: orderList) {
         order.execute ();
      }
      orderList.clear ();
   }
}

Langkah 5

Menggunakan kelas Broker untuk menerima dan menjalankan perintah.

CommandPatternDemo.java

public class CommandPatternDemo {
   public static void main (String [] args) {
      Stock abcStock = new saham ();

      BuyStock buyStockOrder = BuyStock baru (abcStock);
      SellStock sellStockOrder = SellStock baru (abcStock);

      Broker broker = broker baru ();
      broker.takeOrder (buyStockOrder);
      broker.takeOrder (sellStockOrder);

      broker.placeOrders ();
   }
}

Langkah 6

Verifikasi output.

Saham [Nama: ABC, Jumlah: 10] membeli
Saham [Nama: ABC, Jumlah: 10] dijual