成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Chain of Responsibility Pattern(譯)

Acceml / 2392人閱讀

摘要:每一個都會檢查并且比較消息的等級與該等級,判斷打印或者不打印,并且傳遞消息到下一個。設置每個的錯誤等級以及每個的,每一個的都是當前鏈的一部分。

責任鏈模式

責任鏈模式顧名思義,對于一個請求會去創(chuàng)建一條接受者鏈。這種模式會解耦一種類型的請求中接受者和發(fā)送者,該模式模式屬于行為模式的一種。
在該模式當中,一般情況下,每個接受者都會有另外一個接受者的引用,如果該接受者無法處理該請求,請求會通過引用傳入下一個接受者。

實現(xiàn)

我們創(chuàng)建一個抽象類AbstaractLogger,該類中含有日志的記錄等級。然后我們會創(chuàng)建三個logger實現(xiàn)AbstractLogger。每一個logger都會檢查并且比較消息的等級與該logger等級,判斷打印或者不打印,并且傳遞消息到下一個logger。

第一步

創(chuàng)建一個抽象的Logger類

AbstractLogger.java

public abstract class AbstractLogger {
   public static int INFO = 1;
   public static int DEBUG = 2;
   public static int ERROR = 3;

   protected int level;

   //next element in chain or responsibility
   protected AbstractLogger nextLogger;

   public void setNextLogger(AbstractLogger nextLogger){
      this.nextLogger = nextLogger;
   }
   
   public void logMessage(int level, String message){
      if(this.level <= level){
         write(message);
      }
      if(nextLogger !=null){
         nextLogger.logMessage(level, message);
      }
   }

   abstract protected void write(String message);
    
}
第二步

創(chuàng)建具體的類實現(xiàn)AtstractLogger

ConsoleLogger.java

public class ConsoleLogger extends AbstractLogger {

   public ConsoleLogger(int level){
      this.level = level;
   }

   @Override
   protected void write(String message) {        
      System.out.println("Standard Console::Logger: " + message);
   }
}

ErrorLogger.java

public class ErrorLogger extends AbstractLogger {

   public ErrorLogger(int level){
      this.level = level;
   }

   @Override
   protected void write(String message) {        
      System.out.println("Error Console::Logger: " + message);
   }
}

FileLogger.java

public class FileLogger extends AbstractLogger {

   public FileLogger(int level){
      this.level = level;
   }

   @Override
   protected void write(String message) {        
      System.out.println("File::Logger: " + message);
   }
}
第三步

創(chuàng)建不同類型的logger。設置每個Logger的錯誤等級以及每個logger的Next logger,每一個logger的NextLogger都是當前鏈的一部分。

ChainPatternDemo.java

public class ChainPatternDemo {
    
   private static AbstractLogger getChainOfLoggers(){

      AbstractLogger errorLogger = new ErrorLogger(AbstractLogger.ERROR);
      AbstractLogger fileLogger = new FileLogger(AbstractLogger.DEBUG);
      AbstractLogger consoleLogger = new ConsoleLogger(AbstractLogger.INFO);

      errorLogger.setNextLogger(fileLogger);
      fileLogger.setNextLogger(consoleLogger);

      return errorLogger;    
   }

   public static void main(String[] args) {
      AbstractLogger loggerChain = getChainOfLoggers();

      loggerChain.logMessage(AbstractLogger.INFO, 
         "This is an information.");

      loggerChain.logMessage(AbstractLogger.DEBUG, 
         "This is an debug level information.");

      loggerChain.logMessage(AbstractLogger.ERROR, 
         "This is an error information.");
   }
}
第四步

校驗輸出

Standard Console::Logger: This is an information.
File::Logger: This is an debug level information.
Standard Console::Logger: This is an debug level information.
Error Console::Logger: This is an error information.
File::Logger: This is an error information.
Standard Console::Logger: This is an error information.

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://m.hztianpu.com/yun/65907.html

相關文章

  • 設計模式

    摘要:設計模式目的為了代碼可重用性讓代碼更容易被他人理解保證代碼可靠性設計原則設計原則是設計模式為了達到其目的,所實現(xiàn)的一些準則。 設計模式簡介 1.什么是設計模式 設計模式對是經(jīng)驗的總結,是一套被反復使用的、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設計經(jīng)驗的總結。代表了最佳的實戰(zhàn)。 2.提出及GOF 在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnso...

    enrecul101 評論0 收藏0
  • 責任鏈模式(Chain Of Responsibility

    摘要:責任鏈模式一責任鏈模式定義在責任鏈模式中,許多對象由每個對象及其對下家的引用而連接起來形成一條鏈請求在這個鏈上傳遞,知道其中的某一個對象決定處理此請求角色抽象處理者角色具體處理者角色純與不純純的責任鏈模式要么處理,要么讓下家處理,而不能處理 責任鏈模式 一. 責任鏈模式 1.1 定義 在責任鏈模式中,許多對象由每個對象及其對下家的引用而連接起來形成一條鏈.請求在這個鏈上傳遞,知道其中的...

    godlong_X 評論0 收藏0
  • 背景介紹 之前在閱讀《JavaScript設計模式和開發(fā)實踐》這本書的時候,收貨頗豐,學習了設計模式在很多場景下的應用。 但也是因為書上場景過多,所以當記不清某一種設計模式的時候,翻書溫習復雜案例的成本是相對較高的。有時候,只需要一段經(jīng)典、簡潔的demo就可以迅速回顧起精髓,在快速業(yè)務開發(fā)中,這是個比較經(jīng)濟的做法。 除此之外,當主要工作語言發(fā)生變化的時候(例如:js -> python),簡潔的d...

    Neilyo 評論0 收藏0
  • PHP基礎

    摘要:分別為適配器模式,裝飾器模式,代理模式,外觀模式,橋接模式,組合模式,享元模式。設計模式五適配器模式適配器模式將某個對象的接生成器和協(xié)程的實現(xiàn)在這篇文章中,作者針對那些比較難以理解的概念,以一個更為通俗的方式去講明白。。 PHP 源碼注解 PHP 的詳細源碼注解 PHP 字符串操作整理 一些有關字符串的常用操作。 Redis 常見七種使用場景 (PHP 實戰(zhàn)) 這篇文章主要介紹利用 R...

    HtmlCssJs 評論0 收藏0
  • PHP 設計模式概述

    摘要:創(chuàng)建型模式主要有以下五種簡單工廠模式和工廠方法模式抽象工廠模式單例模式建造者模式原型模式在設計模式一書中將工廠模式分為兩類工廠方法模式與抽象工廠模式。 一、 設計模式(Design pattern)是什么 設計模式是一套被反復使用、多數(shù)人知曉、經(jīng)過分類編目的代碼設計的經(jīng)驗總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 二、 為什么會有設計模式 在軟件開發(fā)過...

    IntMain 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<