1, 模式:人们在自己的环境中不断发现问题和寻找问题的解决方案的时候,发现有些问题以及解决方案不断变换面孔重复 出现,但是在不同的面孔后面有着共同的本质,这个本质就是模式。
2, UML:统一建模语言。
UML语言有以下重要功能:
(1)可视化功能,可以帮助人理解
(2)说明功能
(3)建造功能
(4)建文档功能
3, UML包含以下几种图:
用例图、类图、时序图、合作图、状态图、活动图、构件图、部署图。
4, 类图中包含一下几种关系:
(1)一般化关系(继承关系)
(2)关联关系(一个类知道另一个类的属性和方法,关联可以是双向也可以是单向的,但不鼓励双向)
(3)聚合关系(是关联关系的一种,是整体和个体之间的关系,如汽车和引擎)
(4)合成关系(组合关系)
(5)依赖关系
5, 一个系统的可维护性和可重用性是面向对象的设计要解决的核心问题。
6, 软件的开闭原则(ocp):
一个软件实体应该对扩展开放,对修改关闭。当设计一个模块的时候,应该使这个模块在不被修改的前提下被扩展。
7, 里氏代换原则:
任何基类可以出现的地方那个,子类一定可以出现。是对开闭原则的补充,是对实现抽象化的具体步骤的规范。比如两个类,一个基类Base,另一个子类Derived类,如果一个方法可以接受一个基类对象Base的话method(Base b)那么它必然可以接受一个子类对象,即可以使用method(Derived d)。
8, 依赖倒转原则:
(要针对接口编程,不能针对实现编程)要依赖与抽象,不要依赖于实现。因为抽象类是宏观层面上的业务逻辑,是做战略性判断和决定的地方,那么抽象层应该是相对稳定的,应当是复用的重点,所以应该依赖与抽象。
9, 组合/聚合复用原则:
要尽量使用组合/聚合,而不是继承关系达到复用的目的。继承复用的优点:
(1)新功能的实现较为容易,因为超类的大部分功能都可以通过继承关系进入到子类中
(2)修改和扩展继承而来的实现较为容易。继承的缺点:
(1)继承破坏包装,超类的实现细节都被暴露给子类
(2)如果超类的实现发生变化,子类也需要做相应的变化
(3)从超类继承来的实现是静态的,不可能在运行时间内发生变化,没有足够的灵活性。
10, 迪米特法则:
一个软件实体应当与尽可能少的其他实体发生相互作用,已减少修改的压力。
11, 接口隔离原则:
应当为客户端提供尽可能小的单独接口,而不是提供大的接口。一个接口应该只代表一个角色, 而不应该代表多个角色。
12, 工厂模式:
(1)简单工厂模式:一个接口N个实现类,由角色决定实现哪个实现类的实例。
单例模式:I、构造方法是私有的,客户端不能直接对其进行实例化。
II、通过静态方法来实现对象实例化,方法体内判断对象是否存在,如果存在则不进行创建,如果对象不存在,实例化一个对象。
III、使用一个静态的属性来标示改对象实例。
多例模式:与单例模式的共同之处在于,客户端都不能直接对其进行实例化,同时通过静态的方法向外界提供循环使用的自身的实例。
简单工厂模式的优点:客户端不用自己去创建对象实例,而是由工厂类自己去创建实例,因此客户端只负责去消费该实例即可。
(2)工厂方法模式:
与简单工厂模式的不同点是,不再抽象工厂类中将所有的类进行实例化,而是在具体的实现类 中进行实例化。
(3)抽象工厂模式