Pemahaman peribadi: Pisahkan berbilang perintah dalam kelas dan letakkan satu arahan dalam setiap kelas untuk mencapai penyahgandingan Satu kelas hanya sepadan dengan satu fungsi apabila menggunakan arahan, kelas lain akan mengurus semua perintah secara seragam.
Kelemahan: Jika terdapat terlalu banyak fungsi, terlalu banyak kelas akan dicipta
Corak Perintah ialah corak reka bentuk dipacu data, yang tergolong dalam Corak jenis 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.
Niat: Merangkum permintaan ke dalam objek, membolehkan anda membuat parameter pelanggan dengan 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 membuat semula gelagat Reka bentuk berganding rapat jenis ini yang tidak dapat menahan perubahan tidak sesuai apabila menjalankan perniagaan, pemprosesan transaksi, dsb.
Bila hendak digunakan: Dalam sesetengah situasi, seperti "rakam, buat asal/buat semula, transaksi" dan pemprosesan gelagat lain, gandingan ketat yang tidak dapat menahan perubahan ini 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→perintah→penerima.
Kod kunci: Asingkan perintah dalam kelas untuk mencipta kelas bagi mereka Kelas arahan ini mempunyai kelas induk yang sama.
Kelebihan:
Gandingan yang dikurangkan.
Arahan baharu boleh ditambah dengan mudah pada sistem.
Kelemahan: Menggunakan mod arahan boleh menyebabkan sesetengah sistem mempunyai terlalu banyak kelas arahan khusus.
Senario penggunaan: Mod arahan boleh digunakan di mana-mana arahan dipertimbangkan, contohnya: 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, dan anda juga boleh mempertimbangkan untuk menggunakan mod arahan.
Kami mula-mula mencipta Susunan antara muka sebagai arahan, dan kemudian mencipta kelas Stok sebagai permintaan. Kelas perintah entiti BuyStock dan SellStock melaksanakan antara muka Pesanan dan akan melaksanakan pemprosesan arahan sebenar. Cipta Broker kelas sebagai objek panggilan, yang menerima pesanan dan boleh membuat pesanan. Objek Broker menggunakan mod arahan untuk menentukan objek yang melaksanakan perintah berdasarkan jenis arahan. Kelas CommandPatternDemo menggunakan kelas Broker untuk menunjukkan corak arahan.
Langkah pelaksanaan khusus
1.
2. Buat kelas permintaan stok.
package src.com.设计模式.命令模式; /* * 股票类 * */ public class Stock { private String name; private int quantity; public Stock(String name, int quantity) { this.name = name; this.quantity = quantity; } public void buy(){ System.out.println("股票买入成功"+name+",股数:"+quantity); } public void sell(){ System.out.println("股票卖出成功"+name+",股数: "+quantity); } }
3. Buat susunan antara muka arahan.
package src.com.设计模式.命令模式; public interface Order { void execute(); }
4. Cipta kelas entiti BuyStock yang melaksanakan antara muka Pesanan.
package src.com.设计模式.命令模式; public class BuyStock implements Order{ //依赖于Stock对象 private Stock stock; public BuyStock(Stock stock) { this.stock = stock; } @Override public void execute() { //购买目标股票的业务操作 stock.buy(); } }
5. Cipta kelas entiti SellStock yang melaksanakan antara muka Pesanan.
package src.com.设计模式.命令模式; public class SellStock implements Order{ private Stock stock; public SellStock(Stock stock) { this.stock = stock; } @Override public void execute() { stock.sell(); } }
6. Cipta Broker kelas panggilan arahan.
package src.com.设计模式.命令模式; import java.util.ArrayList; import java.util.List; /* * 股票经纪人类 * */ public class Broker { private List<Order> orderList = new ArrayList<>(); //1.接受订单 public void takeOrder(Order order){ orderList.add(order); } //2.执行订单 public void placeOrders(){ orderList.forEach(fun ->{ fun.execute(); }); } }
7 Cipta kelas CommandPatternDemo, dan kemudian gunakan kelas Broker untuk menerima dan melaksanakan arahan.
package src.com.设计模式.命令模式; public class CommandPatternDemo { public static void main(String[] args) { Stock stock = new Stock("002607",100); BuyStock buyStock = new BuyStock(stock); SellStock sellStock = new SellStock(stock); Broker broker = new Broker(); broker.takeOrder(buyStock); broker.takeOrder(sellStock); broker.placeOrders(); } }
8. Jalankan program dan keluarkan hasilnya.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan corak arahan dalam corak reka bentuk Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!