mod arahan
Corak Perintah ialah corak reka bentuk dipacu data, iaitu corak tingkah laku. Permintaan itu dibungkus dalam objek dalam bentuk arahan dan dihantar ke objek panggilan. Objek memanggil mencari objek yang sesuai yang boleh mengendalikan arahan, dan menghantar arahan kepada objek yang sepadan, yang melaksanakan arahan.
Pengenalan
Niat: Merangkum permintaan ke dalam objek, membolehkan anda membuat parameter klien dengan perubahan permintaan yang berbeza.
Penyelesaian utama: Dalam sistem perisian, peminta gelagat dan pelaksana gelagat biasanya mempunyai perhubungan yang berganding rapat, tetapi dalam beberapa kes, seperti keperluan untuk merekod, membatalkan atau Ini secara ketat reka bentuk berganding yang tidak dapat menahan perubahan tidak sesuai apabila membuat semula, urus niaga, dsb. diproses.
Bila hendak digunakan: Dalam sesetengah situasi, seperti "rakaman, buat asal/buat semula, transaksi", dll., gandingan ketat jenis ini yang tidak dapat menahan perubahan adalah tidak sesuai. Dalam kes ini, bagaimana untuk memisahkan "peminta tingkah laku" daripada "pelaksana tingkah laku"? Mengabstraksi satu set tingkah laku ke dalam objek boleh mencapai gandingan longgar antara mereka.
Cara menyelesaikan: Panggil penerima melalui pemanggil untuk melaksanakan arahan, perintahnya ialah: pemanggil → penerima → arahan.
Kod kunci: Tentukan tiga peranan: 1. diterima ialah objek pelaksanaan arahan sebenar 2. Perintah 3. invoker menggunakan pintu masuk objek arahan
Contoh aplikasi :Hanya terdapat satu pengawal teras tindakan ActionServlet dalam tupang 1, yang bersamaan dengan Invoker, dan kelas lapisan model akan mempunyai kelas model yang berbeza dengan aplikasi yang berbeza, yang bersamaan dengan Perintah tertentu.
Kelebihan: 1. 2. Arahan baharu boleh ditambah dengan mudah pada sistem.
Kelemahan: Menggunakan mod arahan boleh menyebabkan terlalu banyak kelas arahan khusus untuk sesetengah sistem.
Senario penggunaan: Mod arahan boleh digunakan di mana-mana arahan dipertimbangkan, seperti: 1. Setiap butang dalam GUI ialah arahan. 2. Simulasikan CMD.
Nota: Sistem perlu menyokong operasi buat asal (Buat asal) dan operasi pemulihan (Buat semula) arahan Anda juga boleh mempertimbangkan untuk menggunakan mod arahan mod.
Melaksanakan
Kami mula-mula mencipta antara muka Pesan sebagai arahan dan kemudian mencipta kelas Stok sebagai permintaan. Kelas perintah entiti BuyStock dan SellStock melaksanakan antara muka Pesan dan akan melaksanakan pemprosesan arahan sebenar. Cipta kelas Broker sebagai objek panggilan, yang menerima pesanan dan boleh membuat pesanan. Objek
Broker menggunakan corak arahan, yang menentukan objek yang melaksanakan perintah berdasarkan jenis arahan. CommandPatternDemo, kelas demo kami menggunakan kelas Broker untuk menunjukkan corak arahan.
Langkah 1
Buat antara muka arahan.
Order.java
public interface Order { void execute(); }
Langkah 2
Buat kelas permintaan.
Stock.java
public class Stock { private String name = "ABC"; private int quantity = 10; public void buy(){ System.out.println("Stock [ Name: "+name+", Quantity: " + quantity +" ] bought"); } public void sell(){ System.out.println("Stock [ Name: "+name+", Quantity: " + quantity +" ] sold"); } }
Langkah 3
Buat kelas entiti yang melaksanakan antara muka Pesan.
BuyStock.java
public class BuyStock implements Order { private Stock abcStock; public BuyStock(Stock abcStock){ this.abcStock = abcStock; } public void execute() { abcStock.buy(); } }
SellStock.java
public class SellStock implements Order { private Stock abcStock; public SellStock(Stock abcStock){ this.abcStock = abcStock; } public void execute() { abcStock.sell(); } }
Langkah 4
Buat panggilan arahan kelas .
Broker.java
import java.util.ArrayList; import java.util.List; public class Broker { private List<Order> orderList = new ArrayList<Order>(); public void takeOrder(Order order){ orderList.add(order); } public void placeOrders(){ for (Order order : orderList) { order.execute(); } orderList.clear(); } }
Langkah 5
Gunakan kelas Broker untuk menerima dan melaksanakan arahan.
CommandPatternDemo.java
public class CommandPatternDemo { public static void main(String[] args) { Stock abcStock = new Stock(); BuyStock buyStockOrder = new BuyStock(abcStock); SellStock sellStockOrder = new SellStock(abcStock); Broker broker = new Broker(); broker.takeOrder(buyStockOrder); broker.takeOrder(sellStockOrder); broker.placeOrders(); } }
Langkah 6
Sahkan output.
rreeee