软件设计的目标
.可扩展性
.灵活性
.可插入性
.可重复性
软件复用的好处
.较高的生产效率
.较高的软件质量
.恰当的复用可提高软件的可维护性
软件复用的几种方式
.代码粘贴
.算法复用
.数据结构复用
软件设计的一般原则
.开-闭原则
对扩张开放,对修改关闭
.里氏代换原则
在任何基类出现的地方,子类一定可以出现
.依赖倒转原则
依赖于抽象,不依赖于实现
.借口隔离原则
应当为客户提供尽可能小的单独接口,而不是大的总接口
.组合/聚合复用原则
尽量使用组合/聚合而不是使用继承达到代码复用
.迪米特法则
一个软件实体应尽可能小地于其他实体发生相互作用.
什么是模式
人们在自己的环境中不断的发现问题和寻求问题解决方案的时候,发现有些问题和解决方案的时候,发现有些问题和解决方案不断变换面孔出现,但在这些不同面孔后面,有着共同的本质,这些共同的本质就是模式.
Java中的接口
为什么使用Java接口而不是继承
保证代码的可插入性
多重继承
什么时候使用继承
1)子类是超类的一个特殊种类,而不是超类的一个角色,也就是要区分"Has-A"与"IS -A"两种关系的不同.
Has-A关系应当使用聚合关系描述,而只有IS-A关系才符合继承关系
2) 永远不会出现需要将子类换成另一个类的子类的情况.如果设计师不是很肯定一个类会不会在将来变成理你个子类的话,就不应该将这个类设计成当前这个超类的子类
3)子类具有扩展超类的责任,而不是具有置换掉(override)或注销掉(Nullify)超类的责任.如果子类需要大量地置换掉超类的行为,那么这个子类不应当成为这个超类的子类
4)只有在分类学角度上有意义时,才可以使用继承,不要从工具类继承
设计模式的分类:(设计模式23种中重要的十几种模式我已经加粗显示出来了)
1。创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
2。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
3.行为型模式,共11中:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
接下来着重介绍加粗的设计模式