⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m_cor.java

📁 超好的设计模式Java事例程序
💻 JAVA
字号:
/*
 CHAIN OF RESPONSIBLEITY—晚上去上英语课,为了好开溜坐到了最后一排,哇,前面坐了好几个漂亮的MM哎,找张纸条,写上“Hi,可以做我的女朋友吗?如果不愿意请向前传”,纸条就一个接一个的传上去了,糟糕,传到第一排的MM把纸条传给老师了,听说是个老处女呀,快跑! 

  责任链模式:在责任链模式中,很多对象由每一个对象对其下家的引用而接 

  起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。客户并不知道链上的哪一个对象最终处理这个请求,系统可以在不影响客户端的情况下动态的重新组织链和分配责任。处理者有两个选择:承担责任或者把责任推给下家。一个请求可以最终不被任何接收端对象所接受。

CoR的优点:
因为无法预知来自外界(客户端)的请求是属于哪种类型,每个类如果碰到它不能处理的请求只要放弃就可以。

缺点是效率低,因为一个请求的完成可能要遍历到最后才可能完成,当然也可以用树的概念优化。 在Java AWT1.0中,对于鼠标按键事情的处理就是使用CoR,到Java.1.1以后,就使用Observer代替CoR

扩展性差,因为在CoR中,一定要有一个统一的接口Handler.局限性就在这里。


 */
class M_CoR{
	public static void main(String argsd[]){
		LoveHigh a=new LoveHigh("alice");
		LoveMature b=new LoveMature("rose");
		LoveMature c=new LoveMature("lily");
		a.setNext(b);
		b.setNext(c);
		a.observe(new Boy());
	}
}

class LoveMature extends Lover{
 	public LoveMature(String name){
		super(name);
	}
 	public boolean love(Boy b){
 		if (b.getAge()>25){
 			return true;	
 		}
 		else{
 			return false;
 		}
 	}
 }
 

class LoveHigh extends Lover{
	public LoveHigh(String name){
		super(name);
	}
 	public boolean love(Boy b){
 		if (b.getHeight()>180){
 			return true;	
 		}
 		else{
 			return false;
 		}
 	}
 }
 
 class Boy {
 	private float height=176;
 	private float weight=67;
 	private int age=29;
 	public float getHeight(){
 		return this.height;
 	}
 	public float getWeight(){
 		return this.weight;
 	}
 	public float getAge(){
 		return this.age;
 	}
 }
 
 abstract class Lover{
 	private String name;
 	private Lover next;
 	public Lover(String name){
 		this.name=name;
 	}
 	public void setNext(Lover next){
 		this.next=next;
 	}
 	public void observe(Boy b){
 		if (love(b)){
 			this.ok();
 		}
 		else{
 			this.fail();
 			if(next!=null)
 				this.next.observe(b);
 		}
 	} 	
 	public abstract boolean love(Boy b);
 	public void ok(){
 		System.out.println(name+"喜欢哦");
 	}
 	public void fail(){
 		System.out.println(name+"不喜欢");
 	}
 	
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -