当控制一个对象状态转换的条件表达式过于复杂,把状态的判断逻辑转移到对应的状态类中,实现复杂逻辑的简单化,这是状态模式的初衷。状态模式的核心组成要点:
1. 抽象状态接口或类State:封装状态行为。
2. 具体状态类 Concrete State:实现抽象State类或接口的行为,每个状态对应一个类。
3. 环境类 Context:用于实现状态的转换与客户端的调用,其包含了对一个对State实例的引用。
策略模式定义了一系列算法(算法族),各可以相互替换,客户端可根据实际情况选择使用哪一种算法,算法的变化不会影响使用算法的客户。
策略模式核心结构: (更多…)
责任链模式是将请求发送者与处理者之间的耦合关系降低的一种行为模式。如,在公司中,研发部部长申请一笔部门活动经费,按照公司规定,经费在5万元内研发总监签字即可,经费在5万元至10万元的需要总经理批准,经费在10万元至20万元之间的需要副总裁批准。
按照一般思维,研发部部长必须很熟悉公司规章制度,自行根据金额大小去找不同领导签字,这就无形中增加了额外工作负荷。现在公司开发了一套系统,申请人只需要将金额等基本申请信息填写好,录入系统,系统根据公司规则自动判断该发送到哪个领导审批,相应领导接收到申请后审批,并将审批结果反馈回来。这样申请人无需去额外学习复杂的公司制度,也不需要关心是谁处理了这个申请,申请人和审批领导实现了解耦,提高了效率。这套系统就充当了责任链。 (更多…)
《待续》
动态代理与静态代理最大的不同在于,动态代理中,代理类对象由JVM生成,不再需要我们自己编写代理类。
核心实现:
1. java.lang.reflect.Proxy类动态生成代理类和对象,它提供用于创建动态代理类和实例的静态方法,是由这些方法创建的所有动态代理类的超类。
2.java.lang.reflect.InvocationHandler处理器接口,可以通过invoke方法实现对真实角色的访问。(每次通过Proxy生成代理类对象时都要指定该处理器接口) (更多…)
装饰模式的核心实现:
1.抽象组件(Component):具体类和装饰类基本功能规范,通过二者的实现,可以通过多态方式互为引用。
2.具体组件(Concrete Component):抽象组件的具体实现类。
3.抽象装饰(Decorator):继承抽象构件,并包含具体构件的实例,可以通过其子类扩展具体构件的功能。
4.具体装饰(ConcreteDecorator):实现抽象装饰的相关方法,并给具体构件对象添加附加的功能。
下面以实例说明实现过程: (更多…)