ooad第四天

结构型设计模式

结构型设计模式用于处理类或对象之间的组合,即描述类和对象之间怎样组织起来形成大的结构,从而实现新的功能。

外观模式(Facade):外观模式的核心是,通过将分散的功能包含在外观类中,从而提供一致的操作接口,封装实现,起到了松耦合的目的(体现迪米特法则)

装饰器模式(Decorator):Decorator模式采用对象组合而非继承的手法,实现了在运行时动态的扩展对象功能的能力,而且可以根据需要扩展多个功能,避免了单独使用继承带来的“灵活性差”和“多子类衍生问题”。
装饰器模式至少有:抽象构件角色、具体构件角色、抽象装饰角色、具体装饰角色,4个类

代理模式(Bridge): 客户程序和目标对象之间增加一层中间层,让代理对象来代替目标对象打点一切。

适配器模式:简单来说就是将不匹配的变成匹配

ooad第三天

创建设计模式

模式:描述了解决该问题的核心方案,这样就可以多次使用这一解决方案,也就是说可以重复使用的设计方案。
模式的四个基本要素:
模式名称、该模式所能解决的问题、解决方案、使用该模式后的效果(优点和缺点)

模式的分类:

架构模式、设计模式

使用模式的优点:复用、增强表达能力、维护

创建型模式分类:

工厂模式:是集中创建实例对象
单例模式:只能产生一个对象
原型模式:克隆

工厂模式分为:

简单工厂、工厂方法、抽象工厂

单例模式分为:

懒汉模式、饿汉模式

原型模式分为:

浅度克隆(实现cloneable接口)、深度克隆(实现serialiable接口)

ooad第二天

设计原则

面向对象设计原则
好的设计
可读性、可复用性、可扩展性、可维护性
上面四个标准太抽象无法考量:高内聚,高耦合
什么是内聚度:定义:表示一个应用程序的单个单元所负责的热我弄数量和多样性内聚与单个类或者单个方法和他类相关。
什么是耦合度: 耦合度表示类和类之间的紧密程度

1单元职责

一个类而言,应该仅有一个引起他变化的原因。永远不让一个类存在多个改变的理由,一个类只应该做和一个任务相关的业务,不应该把过多的业务放在一个类中完成。

2开辟原则

值一个软件实体(类、模块、方法)应该对扩展开放,对修改关闭
开闭原则是设计原则的核心原则
开闭原则的核心带来了灵活性

3里氏替换原则:

父类出现的地方子类一定会出现
子类应该能够完全替换任何父类能够出现的地方
里氏替换原则: 主要是来检查两个类是否经常有继承关系.
动化确性保证:来创建一个新的子类时,符合里氏替换原则的扩展不会给已有的系统引入新的错误。
里氏替换原则给我们的启示
如果子类不能完整的实现父类的方法,或者父类的某些方法,在子类中已经方式 “畸变” 则建议断开父类继承关系,采用依赖,聚集,组合等关系,代替继承。

4依赖倒转原则

高层模块不应该依赖于低层模块,二者都应该依赖于抽象:
抽象不应该依赖于细节,细节应该依赖于抽象。
也就是面向对象编程,不要面向具体编程。
具体耦合关系:发生在两个具体的(可实例化的)类之间,经由一个类对另一个类具体类的直接引用造成。
抽象耦合关系:发生在个具体类和一个抽象类(或接口)之间,使两个必须发生关系的类之间存在最大灵活性。

5聚合组合复用原则:

是指要尽量使用聚合/聚合实现代码复用,少用继承来达到复用目的
组合/聚合复用
继承复用

6接口隔离原则:

是指客户不应该依赖他们用不到的方法,
只给每个客户所需要的接口。
换句话说,就是不能强迫用户
去依赖那些他们不使用的接口,也就是使用专门的接口,比用一个统一的接口好。

7迪米特法则:

又称为最少知识原则,它的定义为:一个软件实体应当尽可能少的与其他实体发生相互作用

ooad第一天

面向对象技术概述

软件工程三大要素:方法、过程、工具

软件生命周期6个阶段:可行性分析阶段、需求分析阶段、系统设计阶段(设计阶段又分为概要设计和详细设计)、 系统实现阶段、 测试阶段、维护阶段。

UML(统一建模语言):是专门用来进行软件系统设计和架构建模的一门可视化建模语言,它通过各种图示展示了软件系统的方方面面。

使用类图表示关系:接口与类(实现关系)、对象与对象之间(泛化关系、关联关系)。
关联关系有分为:聚合关系、组合关系、依赖关系

泛化关系: 指对象与对象之间的继承关系
关联关系: 指对象和对象之间的连接
依赖关系:使用(方法或构造器的参数、方法的返回值)
聚合关系: 整体与部分的拥有关系(整体与部分之间是可分离的)
组合关系: 同样体现整体与部分间的包含关系(整体与部分是不可分的)

JavaSE核心总结思维导图篇

博客针对Java这块核心总结我已经总结成了思维导图,如果你是新手的话正好想学习这块内容,可以看看我这个图可以跟着这个流程学习,时间就像一张网,撒在哪里,就在哪里收获。