文章目录
1. 实现古代妇女的“三从”制度
一位女性在结婚之前要听从于父亲,结婚之后要听从于丈夫,如果丈夫死了还要听从于儿子 。作为父亲、丈夫或儿子,只有两种选择:要不承担起责任来,允许她或不允许她逛街;要不就让她请示下一个人,这是整个社会体系的约束 。
下面来看如何通过程序来实现“三从”,需求很简单:通过程序描述一下古代妇女的“三从”制度 。
对应的类图:是三个有决策权对象的接口,是女性的代码
①接口
public interface IWomen {/*** 获得个人状况** @return 结婚了还是没结婚、丈夫是否在世*/int getType();/*** 获得个人请示* @return 你要干什么?出去逛街?约会?还是看电影?*/String getRequest();}
② Women 实现类
@NoArgsConstructor@AllArgsConstructorpublic class Women implements IWomen {/** 通过一个int类型的参数来描述妇女的个人状况* 1--未出嫁* 2--出嫁* 3--夫死*/private int type = 0;//妇女的请示private String request = "";@Overridepublic int getType() {return type;}@Overridepublic String getRequest() {return request;}}
③接口
public interface IHandler {/*** 一个女性(女儿、妻子或者母亲)要求逛街,你要处理这个请求*/public void HandleMessage(IWomen women);}
④实现类
public class Father implements IHandler {/*** 未出嫁的女儿来请示父亲*/public void HandleMessage(IWomen women) {System.out.println("女儿的请示是:" + women.getRequest());System.out.println("父亲的答复是:同意");}}
⑤实现类
public class Husband implements IHandler {/*** 妻子向丈夫请示*/public void HandleMessage(IWomen women) {System.out.println("妻子的请示是:" + women.getRequest());System.out.println("丈夫的答复是:同意");}}
⑥ Son 实现类
public class Son implements IHandler {/*** 母亲向儿子请示*/public void HandleMessage(IWomen women) {System.out.println("母亲的请示是:" + women.getRequest());System.out.println("儿子的答复是:同意");}}
⑦测试类
public class Client {public static void main(String[] args) {//随机挑选几个女性Random rand = new Random();ArrayList
上述代码实现存在职责界定不清晰,代码臃肿,耦合过重,异常情况欠考虑等问题 。
2. 实现古代妇女的“三从”制度-优化
女性提出一个请示,必然要获得一个答复,甭管是同意还是不同意,总之是要一个答复的,而且这个答复是唯一的,不能说是父亲作出一个决断,而丈夫也作出了一个决断,也即是请示传递出去,必然有一个唯一的处理人给出唯一的答复 。
我们可以抽象成这样一个结构,女性的请求先发送到父亲类,父亲类一看是自己要处理的,就作出回应处理,如果女儿已经出嫁了,那就要把这个请求转发到女婿来处理,那女婿一旦去天国报道了,那就由儿子来处理这个请求 。
- Strategy 设计模式第2讲——策略模式
- java设计模式种strategy模式简述与使用
- 18 如何安装SCO Unix《精通Unix下C语言编程与项目实践》读书笔记
- 金字塔原理读书笔记零 序言
- 【设计模式】SpringBoot优雅使用策略模式
- 设计模式学习之策略模式
- 《Head First》 设计模式之一 Strategy model
- HeadFirst-设计模式-适配器模式
- 一 Python与设计模式——Abstract Factory
- 二 《Head First 设计模式》之策略