JAVA変換(XII)の責任デザインパターンのデザインパターンチェーン

序文

     この章では、責任のデザインパターンの知識のデザインパターンチェーンを記述する

方法

1.コンセプト

ゼネラルマネージャーで百万指示よりも貨物も大きくディレクターから未満千万命令、100,000を超えると、管理者が指示した商品の未満億の価値の機器、物品を購入するために財政資金を承認する会社:次のシナリオを想像してみてください。だから、どのようにこの論理はいますか?

その後、我々の最初の考えは他...場合に対処するために、伝統的な使用することですが、ビジネスのために維持することは非常に複雑で困難です。

上記の課題を解決するために承認プロセスの財務面では、私たちはより良いChain of Responsibilityパターンを使用します。

責任デザインパターンの考え方2.チェーンの実現

1)対応するプロジェクトを作成します

申込書のクラスの2)の調製

package chain;

/**
 * 申请表
 * @author jwang
 *
 */
public class Apply {
	private String name;
	private int money;//以万为单位
	public Apply(String name, int money) {
		super();
		this.name = name;
		this.money = money;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getMoney() {
		return money;
	}
	public void setMoney(int money) {
		this.money = money;
	}
	
}

3)責任抽象クラスのチェーンを作成します。

package chain;

/**
 * 责任链抽象类
 * @author jwang
 *
 */
public abstract class Leader {
	protected String name;
	protected Leader nextLeader;//下一个领导
	
	public Leader(String name) {
		super();
		this.name = name;
	}

	public void setNextLeader(Leader nextLeader) {
		this.nextLeader = nextLeader;
	}
	//处理申请
	public abstract void handleRequest(Apply apply);
}

4)責任特定のクラスのリーダー(ディレクター、マネージャー、ゼネラルマネージャー)のチェーンを作成します。

package chain;

/**
 * 主任
 * @author jwang
 *
 */
public class Director extends Leader {

	public Director(String name) {
		super(name);
	}

	@Override
	public void handleRequest(Apply apply) {
		if(apply.getMoney()<10){
			System.out.println("审批金额小于10万,"+this.name+"审批通过!");
		}else {
			//交给下一个领导审批
			this.nextLeader.handleRequest(apply);
		}
	}

}
package chain;
/**
 * 经理
 * @author jwang
 *
 */
public class Manager extends Leader {

	public Manager(String name) {
		super(name);
	}

	@Override
	public void handleRequest(Apply apply) {
		if(apply.getMoney()<100){
			System.out.println("审批金额小于100万,"+this.name+"审批通过!");
		}else {
			//交给下一个领导审批
			this.nextLeader.handleRequest(apply);
		}
	}

}
package chain;
/**
 * 总经理
 * @author jwang
 *
 */
public class GeneralManager extends Leader {

	public GeneralManager(String name) {
		super(name);
	}

	@Override
	public void handleRequest(Apply apply) {
		if(apply.getMoney()>100){
			System.out.println("审批金额大于100万,"+this.name+"审批通过!");
		}
	}

}

5)書き込みテストコード

package chain;

public class Test {

	public static void main(String[] args) {
		Apply apply1 = new Apply("材料费申请", 90);
        Apply apply2 = new Apply("材料费申请", 120);
		
		Leader a = new Director("张主任");
		Leader b = new Manager("李经理");
		Leader c = new GeneralManager("王总经理");
		
        //设置领导顺序
		a.setNextLeader(b);
		b.setNextLeader(c);
		
		a.handleRequest(apply1);
        a.handleRequest(apply2);
	}

}

プログラムの結果:

おすすめ

転載: blog.csdn.net/qq_21046965/article/details/92401100
おすすめ