1、责任链模式:在研磨设计模式里,责任链模式主要讲解的是 项目经理、部门经理、总经理之间审批活动经费之间的责任链,后来添加了审批出差经费、导致Handler接口要增加一个处理预支差旅费用的申请的方法(handlePreFeeRequest),这样所有的实现类都要实现这个方法,改变比较大。违背了,接口时常改动的原则(开闭原则)。解决办法是Handler接口处理请求的时候带一个参数(RequestModel rm),且返回的是Obect对象,然后 类 FeeRequestModel、PreFeeRequestModel 继承这个类。增加一种参数类型,导致了经理处理类也要增加一个如(DepManager2 专门处理PreFeeRequestModel 这种类型的请求,如果是FeeRequestModel这种类型的那么 还是DepManager类去处理请求 )增加 了对象的细粒度。Handler的实现接口,最主要的代码是:if(在自己的处理范围内){自己处理}else{下一个责任人去处理}。更加灵活的处理审批过程--》过滤流。
核心是:分离职责、动态组合。
2、策略模式:在研磨设计模式里,策略模式主要讲解的是给客户报价,不同客户报价不同,上下文持有不同的策略选择不同的报价方式。讲解了策略与上下文的关系:有2种方式,例子是:支付方式:人民币支付、美元支付、卡支付,问题是卡支付的时候比前2种现金支付的时候,多了一个”卡号“,卡号这个属性即可以放在card里,也可以放在上下文里,如果放在上下文里,那么要多一个上下文对象Context2继承Context里面,多了个卡号属性。
核心是:分离算法、选择实现。
3、生成器模式:书中的例子是解析一段文字,有2中方式:1、xml方式2文本方式。构造一个实体有:有头部、身体、尾部 3个部分。
核心是:分离整体构建算法和部件构造。
4、桥梁模式:书中讲解了 消息发送 。消息首先分:普通消息、加急消息、特级消息。发送方式:站内发送、EMAIL发送、移动发送。这样消息和发送发送 就有9种不同的方式,形成了9个类,再加上一种消息类型、一种发送方式,要16个类。
解决办法:抽象和实现分离开来,消息成一个抽象类,里面包含一个发送的接口。
发送构造一个接口,有3种实现方式:站内发送、EMAIL发送、移动发送。
在客户端自动构造消息类型、自动构造发送方式。这样减少了很多类。