迭代器模式一步步实现

//加薪代码初步
/*class Request{
	private String requestType;
	private String requestContent;
	private int num;
	public String getRequestType() {
		return requestType;
	}
	public void setRequestType(String requestType) {
		this.requestType = requestType;
	}
	public String getRequestContent() {
		return requestContent;
	}
	public void setRequestContent(String requestContent) {
		this.requestContent = requestContent;
	}
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
}
class Manager{
	protected String name;
	public Manager(String name) {
		super();
		this.name = name;
	}
	public void GetResult(String managerLevel,Request request) {
		System.out.println(request.getRequestType()+":"+request.getNum());
		if(managerLevel == "经理") {
			if(request.getRequestType() == "请假" && request.getNum()<=2) {
				System.out.println("数量<=2,被批准");
			}
			else {
				System.out.println("数量>2,无权批准");
			}
		}
		else if(managerLevel == "总监") {
			if(request.getRequestType() == "请假" && request.getNum()<=5) {
				System.out.println("数量<=5,被批准");
			}
			else {
				System.out.println("数量>5,无权批准");
			}
		}
		else if(managerLevel == "总经理") {
			if(request.getRequestType() == "请假") {
				System.out.println("请假,被批准");
			}
			else if(request.getRequestType() == "加薪" && request.getNum()<=500) {
				System.out.println("加薪<=500,被批准");
			}
			else if(request.getRequestType() == "加薪" && request.getNum()>500) {
				System.out.println("加薪>500,无权批准");
			}
		}
	}
}
public class Main {
	  public static void main(String args[])
	  {
		  Manager m1 = new Manager("经理");
		  Manager m2 = new Manager("总监");
		  Manager m3 = new Manager("总经理");
		  Request r = new Request();
		  r.setRequestType("加薪");
		  r.setRequestContent("小菜请求加薪");
		  r.setNum(1000);
		  m1.GetResult("经理", r);
		  m2.GetResult("总监", r);
		  m3.GetResult("总经理", r);
		  System.out.println("=====");
	}
}*/
//重构加薪代码
/*class Request{
	private String requestType;
	private String requestContent;
	private int num;
	public String getRequestType() {
		return requestType;
	}
	public void setRequestType(String requestType) {
		this.requestType = requestType;
	}
	public String getRequestContent() {
		return requestContent;
	}
	public void setRequestContent(String requestContent) {
		this.requestContent = requestContent;
	}
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
}
abstract class Manager{
	protected String name;
	protected Manager superior;
	public Manager(String name) {
		super();
		this.name = name;
	}
	public void setSuperior(Manager superior) {
		this.superior = superior;
	}
	abstract public void RequestApplications(Request request);
}
class CommonManager extends Manager{
	public CommonManager(String name) {
		super(name);
	}
	public void RequestApplications(Request request) {
		// TODO Auto-generated method stub
		if(request.getRequestType() == "请假" && request.getNum()<=2) {
			System.out.println(name+":"+request.getRequestContent()+"数量"+request.getNum()+"被批准");
		}
		else {
			if(superior !=null) {
				superior.RequestApplications(request);
			}
		}
	}
}
class Majordomo extends Manager{
	public Majordomo(String name) {
		super(name);
	}
	public void RequestApplications(Request request) {
		// TODO Auto-generated method stub
		if(request.getRequestType() == "请假" && request.getNum()<=5) {
			System.out.println(name+":"+request.getRequestContent()+"数量"+request.getNum()+"被批准");
		}
		else {
			if(superior !=null) {
				superior.RequestApplications(request);
			}
		}
	}
}
class GeneralManager extends Manager{
	public GeneralManager(String name) {
		super(name);
	}
	public void RequestApplications(Request request) {
		// TODO Auto-generated method stub
		if(request.getRequestType() == "请假") {
			System.out.println(name+":"+request.getRequestContent()+"数量"+request.getNum()+"被批准");
		}
		else if(request.getRequestType() == "加薪" && request.getNum()<=500) {
			System.out.println(name+":"+request.getRequestContent()+"数量"+request.getNum()+"被批准");
		}
		else {
			System.out.println(name+":"+request.getRequestContent()+"数量"+request.getNum()+"再说吧");
		}
	}
}
public class Main {
	  public static void main(String args[])
	  {
		  CommonManager cm = new CommonManager("经理");
		  Majordomo m = new Majordomo("总监");
		  GeneralManager gm = new GeneralManager("总经理");
		  cm.setSuperior(m);
		  m.setSuperior(gm);
		  Request r = new Request();
		  r.setRequestType("请假");
		  r.setRequestContent("小菜请求请假");
		  r.setNum(1);
		  cm.RequestApplications(r);
		  Request r2 = new Request();
		  r2.setRequestType("请假");
		  r2.setRequestContent("小菜请求请假");
		  r2.setNum(4);
		  cm.RequestApplications(r2);
		  Request r3 = new Request();
		  r3.setRequestType("加薪");
		  r3.setRequestContent("小菜请求加薪");
		  r3.setNum(1000);
		  cm.RequestApplications(r3);
	}
}*/
//职责链模式
abstract class Handler{
	protected String name;
	protected Handler successor;
	public void setSuccessor(Handler successor) {
		this.successor = successor;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	abstract public void HandlRequest(int request);
}
class ConcreteHandler1 extends Handler{
	public void HandlRequest(int request) {
		// TODO Auto-generated method stub
		if(request>=0&&request<10) {
			System.out.println(this.getName()+"处理请求"+request);
		}
		else if(successor != null) {
			successor.HandlRequest(request);
		}
	}
}
class ConcreteHandler2 extends Handler{
	public void HandlRequest(int request) {
		// TODO Auto-generated method stub
		if(request>=10&&request<20) {
			System.out.println(this.getName()+"处理请求"+request);
		}
		else if(successor != null) {
			successor.HandlRequest(request);
		}
	}
}
class ConcreteHandler3 extends Handler{
	public void HandlRequest(int request) {
		// TODO Auto-generated method stub
		if(request>=20) {
			System.out.println(this.getName()+"处理请求"+request);
		}
		else if(successor != null) {
			successor.HandlRequest(request);
		}
	}
}
public class Main {
	  public static void main(String args[])
	  {
		  Handler h1 = new ConcreteHandler1();
		  h1.setName("审批人1");
		  Handler h2 = new ConcreteHandler2();
		  h2.setName("审批人2");
		  Handler h3 = new ConcreteHandler3();
		  h3.setName("审批人3");
		  h1.setSuccessor(h2);
		  h2.setSuccessor(h3);
		  int[] requests = {2,5,14,22,18,3,27,20};
		  for(int i=0;i<requests.length;i++) {
			  h1.HandlRequest(requests[i]);
		  }
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
内容简介: 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 本课程内容定位学习设计原则,学习设计模式的基础。在实际开发过程中,并不是一定要求所有代码都遵循设计原则,我们要考虑人力、时间、成本、质量,不是刻意追求完美,要在适当的场景遵循设计原则,体现的是一种平衡取舍,帮助我们设计出更加优雅的代码结构。本章将详细介绍开闭原则(OCP)、依赖倒置原则(DIP)、单一职责原则(SRP)、接口隔离原则(ISP)、迪米特法则(LoD)、里氏替换原则(LSP)、合成复用原则(CARP)的具体内容。 为什么需要学习这门课程? 你在日常的开发中,会不会也遇到过同样的问题。系统出现问题,不知道问题究竟出在什么位置;当遇到产品需求,总是对代码缝缝补补,不能很快的去解决。而且平时工作中,总喜欢把代码堆在一起,出现问题时,不知道如何下手,工作效率很低,而且自己的能力也得不到提升。而这些都源于一个问题,那就是软件设计没做好。这门课能帮助你很好的认识设计模式,让你的能力得到提升。课程大纲: 为了让大家快速系统了解设计模式知识全貌,我为您总结了思维导图,帮您梳理学习重点,建议收藏!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值