也大话设计模式

1. 命令模式

场景:一个对象请求调用另一个对象的方法

结构:请求者、接收者、命令

目的:引入命令接口,解耦请求者和接收者之间的关系

机制:请求者只管发出命令,命令需要怎样完成、调用那些接收者,与请求者无关


2. 观察者模式

场景:多个对象对一个对象的数据变化都感兴趣,都希望跟踪其变化(如:微博关注)

          或者一个对象希望多个对象及时了解自己的变化(如:新闻消息推送)

结构:主题、观察者

机制:主题不仅包含自身数据,也记录了所有观察者,数据变化就发通知,可以增删观察者


3. 装饰模式

场景:需要随时改变某个对象的功能,而不是改变类的功能(如:游戏中的人物增加道具、升级等)

结构:抽象组件(抽象类而非接口)、具体组件、装饰( 抽象组件的一个子类)、具体装饰

机制:具体组件的一个实例便是“被装饰者”,称之为“主体”;具体装饰便是来改变“主体”功能的;

          因为装饰和主体源自同一父类,所以“装饰”和“主体”其实是等价的,装饰即主体,主体即装饰;

          装饰方法的实现,是以主体为传入参数,以装饰为传出参数(反正它们可以被同一父类“抽象组件”引用


4. 策略模式

场景:由于用户需求的变化,导致需要经常修改类中的某个方法体,即不断变化算法(如:列表展示时的多种排序)

办法:如果每当用户需求变化时,就导致修改类中的某部分代码(如:排序算法),那么就应该将这部分代码从类中分割出去,降低它与其他稳定代码的耦合度;

          将该方法封装在一个接口(Strategy)中,提供多个实现即可


5. 责任链模式

场景:对于一个用户请求,需要多个对象来协同处理响应(如:性格测试中的问答,如果选A,跳到第几题,如果选B,跳到第几题)

结构:处理者(接口,提供处理方法且可以设置后继处理者)、具体处理者

机制:第一个处理者收到请求,处理一番,交给后继处理者(动态设定)或直接返回处理结果


稍后继续、、、、





你可能感兴趣的:(也大话设计模式)