每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推
1-系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱而且难以复用该对象。 2-想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类。
优点:1、给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态。 2、实现了信息的封装,使得用户不需要关心状态的保存细节。
缺点:消耗资源。如果类的成员变量过多,势必会占用比较大的资源,而且每一次保存都会消耗一定的内存。
优点: 1、封装不变部分,扩展可变部分。 2、提取公共代码,便于维护。 3、行为由父类控制,子类实现。
缺点:每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。
优点:1.符合单一职责原则 2.优秀的扩展性 3.灵活性
缺点:违反了依赖倒置原则,依赖了具体类,没有依赖抽象
比如点击按钮, View【界面】通过Controller【控制】向服务端发送请求
【服务器回包】触发了数据更新,更新了Model【数据】的数据
Model【数据】数据变更,触发Controller【控制】向View层发消息
View【界面】收到消息,更新表现