0616 作业 2
学习了面向对象编程的历史和各种语言的结构特点,
通过模型抽象领域问题,通过模型进一步设计,进行软件开发得到软件系统。
对象具有状态,行为,标识。
面向对象编程3要素
封装,继承,多态
学习了框架和工具的区别
框架调用应用程序,应用程序调用工具。
不好的代码具有怎样的特点。
僵硬,脆弱,牢固性,粘滞性
如何重构代码。
代码具有面向扩展开放,面向修改关闭。尽可能适应需求变更。
改进button 观察者模式
在被观察者里持有观察者List。
addListener加入观察者
press的时候for循环观察者List。执行观察者方法。
依赖倒置原则,依赖于抽象,抽象不能依赖底层实现,而是实现依赖抽象。
接口调用关系。接口相互调用由调用者还是提供者定义接口?
由调用者提供接口调用更合理。调用方是上层,被调用方是底层。根据依赖倒置原则。
上层定义了依赖抽象接口。被调用者实现底层接口。
框架负责定义好接口,框架使用者填写接口的具体实现。程序启动的时候。框架调用使用者编写的代码。达到约束规范使用者的目的(使用者不能超出框架定义的接口范围)。
里氏替换原则。在使用父类的场合,也可以使用子类替换。如果不能则违反了该原则。
子类只能比父类提供更宽泛的接口,不能提供更约束更小的接口
例如 :父类定义了方法为protected,子类可以使用protected,public。不能使用private
子类抛出的异常是父类抛出异常的子类还是父类?
父类
里氏替换违反举例:
评论