一、基本概念
1、Smalltalk:第二个面向对象的语言,和第一个真正的集成开发环境(IDE)
2、面向对象的特点(抽象):封装(封装变化区域,从而更容易地将代码与变化产生的影响隔离开来)、继承、多态
3、设计模式的原则:单一职责原则、开放-封闭原则、依赖倒转原则、里氏代换原则、合成聚合复用原则、迪米特原则
4、结构化编程的好处:把代码分割成多个模块,增强了代码的复用性,方便了调试和修改,但是结构也相对复杂
5、面向对象编程对象特点:可维护、可扩展、可复用、灵活性好
6、耦合性:描述的是一个例程与其他例程之间联系的紧密程度。内聚性:描述的是一个例程内部组成部分之间相互联系的紧密程度。软件开发要求高内聚低耦合
二、应用
1、抽象工厂:抽象工厂可以解决多个类型产品的创建问题
2、单例:一个全局变量可以使得一个对象被访问,但它不能防止客户实例化多个对象,单例模式让类自身负责保存它的唯一实例,这个类可以保证没有其他的实例可以被创建,并且还提供了一个访问该实例的方法
3、原型:DataSet调用原型模式的Clone就可以解决数据结构的复制问题,Copy不但复制了结构连数据也都复制了
4、建造者:讲一个复杂对象的构建与它的表示分离(建造顺序相同,但是产品内部细节不同),用同样的构建过程创建不同的产品
5、工厂方法:工厂方法开始,当需要更大的灵活性时,设计便会向其他创建性模式演化。工厂方法使得增加新产品时,不需要更改原有的产品体系和工厂类只需要扩展新的类就可以
6、桥接:通过解耦,用聚合来代替继承,通过对象的组合方式,把两个角色之间的继承关系改变为组合的关系,从而使这两者独立的变化(找出变化并封装)
7、适配器:访问不同的数据库时,使接口不同的类通过适配器后协作,解决两个已有接口之间的不匹配问题
8、装饰:以动态、透明的方式给单个对象添加职责
9、组合:客户可以一致的使用组合结构和单个对象。任何用到基本对象的地方都可以使用组合对象
10、外观:如果两个类不必彼此直接通信,那么就不要让这两个类发生直接的相互作用,如果实在需要调用可以通过第三者来转发调用,为子系统提供一个单一而简单的屏障。
11、享元:减少很多对象使得内存开销过大的问题
12、代理:代理对象代表一个单一对象而外观,代理的客户对象无法直接访问目标对象,由代理提供对单独的目标对象的访问控制,代理是原来对象的代表,其他需要与这个对象打交道的操作都是和这个代表交涉。