摘要:
人愤怒的时候会想打人,高兴的时候想笑,人的状态执行了不同的方法,程序也是一样,程序也有状态。当一个方法里需要多个if else来判断逻辑的时候就要注意到,当对象的状态很多时,程序会变得很复杂,而且添加新状态就会增加新的if else语句,大大违反了开闭原则 我们可以使用状态模式,来为程序定义不同的状 阅读全文
摘要:
最典型的就是击鼓传花了,一个传一个,等到适合的人接到。在程序里就是请求者不可以和多个接收者耦合在一起,将所有请求的处理者根据前一对象记住下一个对象的引用形成一条责任链,将请求沿着责任链传递,一直到负责处理请求的对象出现 责任链模式有三个角色,抽象处理者,具体处理者,客户类。抽象处理者定义一个处理请求 阅读全文
摘要:
先看一下策略模式的三个角色: 抽象策略:仅提供一个抽象方法,环境类调用抽象策略的方法,根据实际应用情况由适合的具体策略对象去实现 具体抽象:负责实现抽象策略定义的接口 环境类:环境类负责引用抽象策略,并交给客户端来使用。 简单来说就是客户端调用环境类,环境类调用抽象策略,具体的算法由不同的具体策略来 阅读全文
摘要:
树枝和树干组成了树,就用树枝和树干来讲解一下组合模式。 一个组合模式有3种角色,抽象构件,类似于树干,定义了基本方法;树枝构件,用于管理树叶;树叶构件,用于具体实现。 先来看一个例子 学生: interface Student { void add(Student s); void remove(S 阅读全文
摘要:
享元模式:相同的对象只保存一份,降低了因为大幅创建相同对象来对系统的额外开销 享元模式分为4个角色,非享元对象,抽象享元角色,具体享元角色,享元工厂。非享元角色是享元角色的一个参数,如果需要经常需要调用非享元对象,可能会创建很多的享元角色,这时候可以从享元工厂里获取具体的享元角色,使用一个map存放 阅读全文