软件设计第一课
quick review
配合案例讲述设计模式(一些基础的java和uml知识)
设计时考虑如何使模式变得更好(实践出真知)
auction auctionItem(封装和信息隐藏)
面向对象把细节隐藏在对象内部,把公共部分作为接口,抽象成一个类型,然后实例为不同的对象
第一个要想的,哪些细节是要被隐藏起来的,不同于子过程的隐藏,通过将属性和方法绑定在一起(更高级,将数据也进行了封装)
设计的最基础的想法:
关注哪些信息是要暴露给外面,哪些信息需要隐藏
对象可以保持自己的状态(与过程式编程的区别),把数据一同封装,代表了对象的状态
信息类型:
informative(提供一个信息让对象更新(通知型))
interrogative(要求获得信息)不会改变对象状态
imperative(改变状态)
类:
对象是类不同的数值的拷贝
继承:
处理行为的变化需求
继承父类以应对变化(多态)
多态:
动态绑定非常必要(运行时绑定)
重写
重载
泛型:
构建类型
UML:
类图
类域(静态域)
构造型
继承
接口
关联(对象 link 类 association)(也可以是一种类)
名字、角色、秩
特殊的关联关系:
组合:组成的部分(更强)email-message(header,paragragh...)类型是不同的 黑色菱形 组建的角色是重要的 组合体没有成分不可存在 在更大的设计模式中可以只关注组合体
聚合:临时性的聚集,可以属于多个聚合体,往往是相同类型的 白色菱形 聚合体缺少成分可以存在 可以做递归