Java " />

扫描二维码下载沐宇APP

沐宇

微信扫码使用沐宇小程序

沐宇

java璐d换閾炬ā寮忔€庝箞瀹炵幇

扬州沐宇科技
2023-10-31 19:24:34
Java

Java涓疄鐜拌矗浠婚摼妯″紡鍙互浣跨敤浠ヤ笅姝ラ锛?/p>

  1. 瀹氫箟涓€涓娊璞$殑澶勭悊鍣紙Handler锛夌被锛岃绫诲寘鍚竴涓寚鍚戜笅涓€涓鐞嗗櫒鐨勫紩鐢ㄥ拰涓€涓鐞嗚姹傜殑鏂规硶銆傝鏂规硶鍙互鏍规嵁鍏蜂綋闇€姹傝繘琛屽鐞嗭紝濡傛灉闇€瑕佸皢璇锋眰浼犻€掔粰涓嬩竴涓鐞嗗櫒锛屽垯璋冪敤涓嬩竴涓鐞嗗櫒鐨勫鐞嗘柟娉曘€?/li>
public abstract class Handler {
    protected Handler nextHandler;
    
    public void setNextHandler(Handler nextHandler) {
        this.nextHandler = nextHandler;
    }
    
    public abstract void handleRequest(Request request);    
}
  1. 瀹氫箟鍏蜂綋鐨勫鐞嗗櫒绫伙紝缁ф壙鑷娊璞″鐞嗗櫒绫伙紝骞跺疄鐜板鐞嗚姹傜殑鏂规硶銆傚湪鍏蜂綋澶勭悊鍣ㄤ腑鍒ゆ柇鏄惁婊¤冻澶勭悊璇锋眰鐨勬潯浠讹紝濡傛灉婊¤冻鍒欒繘琛屽鐞嗭紝鍚﹀垯灏嗚姹備紶閫掔粰涓嬩竴涓鐞嗗櫒銆?/li>
public class ConcreteHandlerA extends Handler {
    @Override
    public void handleRequest(Request request) {
        if (request.getType() == RequestType.TYPE_A) {
            // 澶勭悊璇锋眰鐨勯€昏緫
            System.out.println("ConcreteHandlerA handles request: " + request);
        } else if (nextHandler != null) {
            // 灏嗚姹備紶閫掔粰涓嬩竴涓鐞嗗櫒
            nextHandler.handleRequest(request);
        }
    }
}

public class ConcreteHandlerB extends Handler {
    @Override
    public void handleRequest(Request request) {
        if (request.getType() == RequestType.TYPE_B) {
            // 澶勭悊璇锋眰鐨勯€昏緫
            System.out.println("ConcreteHandlerB handles request: " + request);
        } else if (nextHandler != null) {
            // 灏嗚姹備紶閫掔粰涓嬩竴涓鐞嗗櫒
            nextHandler.handleRequest(request);
        }
    }
}

// 鍏朵粬鍏蜂綋澶勭悊鍣ㄧ被鐨勫畾涔?..
  1. 瀹氫箟涓€涓姹傜被锛岀敤浜庡皝瑁呰姹傜殑淇℃伅銆?/li>
public class Request {
    private RequestType type;
    private String data;
    
    public Request(RequestType type, String data) {
        this.type = type;
        this.data = data;
    }
    
    public RequestType getType() {
        return type;
    }
    
    public String getData() {
        return data;
    }
    
    @Override
    public String toString() {
        return "Request [type=" + type + ", data=" + data + "]";
    }
}
  1. 鍦ㄥ鎴风涓垱寤哄叿浣撳鐞嗗櫒鐨勫疄渚嬶紝骞惰缃鐞嗗櫒涔嬮棿鐨勫叧绯汇€傜劧鍚庨€氳繃璋冪敤绗竴涓鐞嗗櫒鐨勫鐞嗘柟娉曟潵澶勭悊璇锋眰銆?/li>
public class Client {
    public static void main(String[] args) {
        // 鍒涘缓鍏蜂綋澶勭悊鍣ㄧ殑瀹炰緥
        Handler handlerA = new ConcreteHandlerA();
        Handler handlerB = new ConcreteHandlerB();
        // 璁剧疆澶勭悊鍣ㄤ箣闂寸殑鍏崇郴
        handlerA.setNextHandler(handlerB);
        
        // 鍒涘缓璇锋眰
        Request requestA = new Request(RequestType.TYPE_A, "Request A");
        Request requestB = new Request(RequestType.TYPE_B, "Request B");
        
        // 澶勭悊璇锋眰
        handlerA.handleRequest(requestA); // ConcreteHandlerA handles request: Request [type=TYPE_A, data=Request A]
        handlerA.handleRequest(requestB); // ConcreteHandlerB handles request: Request [type=TYPE_B, data=Request B]
    }
}

娉ㄦ剰锛氳矗浠婚摼妯″紡鐨勫叧閿湪浜庤缃鐞嗗櫒涔嬮棿鐨勫叧绯伙紝纭繚姣忎釜澶勭悊鍣ㄩ兘鏈変笅涓€涓鐞嗗櫒鐨勫紩鐢ㄣ€傚鐞嗗櫒鎸夌収椤哄簭渚濇澶勭悊璇锋眰锛屽鏋滄煇涓鐞嗗櫒鑳藉澶勭悊璇ヨ姹傦紝鍒欒繘琛屽鐞嗭紱鍚﹀垯灏嗚姹備紶閫掔粰涓嬩竴涓鐞嗗櫒銆?/p>

扫码添加客服微信