1.设计模式是为特定的场景下的问题而定制的解决方案,定制的解决方案是指在特定的环境下克服了问题的限制条件而达成的目标的一种设计模式。
2.MVC设计模式:
a.模型对象维护应用程序的数据,并定义操作数据的特定逻辑,只要加载的是包含有应用程序永久信息的数据,就应将其放入模型对象中。
b.视图对象可以响应用户的操作,并懂得如何将自己展现在屏幕上,视图对象从模型获取数据展示,但两者之间没有耦合,列外(视图需要对数据进行缓存)。
c.控制器连接视图和模型交互,其他操作(为应用程序管理其他对象的生命周期,进行设置和协调任务。控制器可设计为可复用的或不可复用的(既不继承其它类也不被其它类继承)。设计模式主要是针对控制器。
3.设计问题:
a.针对接口编程,而不是针对实现编程。
好处:只要对象符合客户端所要求的接口,客户端就不必在意所使用的对象的确切类型;
客户端只知道定义接口的协议或抽象类,因此客户端对对象的类一无所知;
多态是基于接口的。
b.优先使用对象组合而不是类继承。
继承的优点:类继承简单直接,因为关系在编译时静态定义;
被复用的实现易于修改。
缺点:因为类继承在编译时定义,所以无法在运行时变更从父类继承来的实现。
子类直接面对父类的实现细节,因此破坏了封装性。
父类实现的任何变更都会强制子类进行变更,因为它们的实现联系在一起了。
因为在新的问题场景下继承来的实现已过时或不适用,所以必须重写父类或继承来的实现。
组获的优点:不会破坏封装,因为只通过接口来访问对象;
大大减少了实现的依存关系,因为对象的实现时通过接口来定义的;
可以在运行时将任意对象替换为其它同类型的对象;
有助于保持类的封装以专注于单一的任务;
类及其层次接口能保持简洁,不至于过渡膨胀而无法管理。
缺点:设计中涉及多个对象;
系统的行为将依赖于不同对象间的关系,而不是定义于单个类中;
相识,耦合,聚合。