设计模式
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易理解、保证代码可靠性。
面向对象的三大基本特征(继承、封装、多态)
面向对象(Object Oriented Programming) = 对象 + 类 + 继承 + 消息通信
对象:包含现实世界物体特征的抽象实体
类:具有相同属性和操作功能的对象的集合与抽象,类是对象的抽象
继承
子类继承父类非private的属性和功能;子类可扩展父类没有的功能;子类能够以自己的方式实现父类的功能。
继承是多态的前提。
封装
每一个对象都包括它能进行操作所须要的全部信息,这个特性成为封装,因此对象不必依赖其它对象来完毕自己的操作。
封装能提高代码复用性和安全性。
多态
表示不同的对象可运行同样的动作,但要通过它们自己的实现代码来运行。
多态能提高程序的拓展性。
面向对象的五个基本设计原则
单一职责原则、开放封闭原则、依赖倒置原则、接口隔离原则、Liskov替换原则
注:设计模式通过实现这些原则,达到代码复用、增加可维护性的目的
设计模式的七大原则
单一职责原则(Single Responsibility Principle 或 SRP)
一个类只负责"一个功能"(类的功能要单一),这样可以使程序更利于维护。
开放封闭原则(Open-Closed Principle 或 OCP)
软件实体(类、模块、函数等)可以被扩展,但是不能被修改。
依赖倒置原则(Dependency Inversion Principle 或者 DIP)
高层模块不应该依赖底层模块,两者都应该依赖抽象;
抽象不应该依赖细节,细节应该依赖抽象;
要针对接口编程,不要针对实现编程;
接口隔离原则(Interface Segregation Principle 或者 ISP)
使用多个专门的接口比使用单一的总接口要好。
里氏替换原则(Liskov Substitution Principle 或者 LSP)
任何基类(父类)可以出现的地方,子类一定可以出现。
迪米特法则(Law of Demeter 或者 LoD)
又称最少知识原则,一个对象只与最直接的朋友们通信。
组合/聚合复用原则(Composition/Aggregation Reuse Principle 或者 CARP)
尽量使用合成/聚合的方式,而不是使用继承。
设计模式四要素
1.模式名称:为每个设计模式取个名字,方便交流.
2.问题:描述在什么场景下,出现什么样的特定的问题.
3.解决方案:描述如何解决这个问题.
4.效果:描述模式应用的效果,以及可能带来的问题,或者使用中需要权衡的问题
设计模式的分类
设计模式分为三种类型,共23类
创建型模式
通过以某种方式控制对象的创建来解决问题。
包括:单例模式(Singleton)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)、工厂模式(Factory Method)、原型模式(Prototype)、简单工厂模式(Simple Factory)
结构性模式
描述如何组合类和对象以获得更大的结构。
包括:适配器模式(Adapter)、桥接模式(Bridge)、装饰模式(Decorator)、组合模式(Composite)、外观模式(Facade)、享元模式(Flyweight)、代理模式(Proxy)
行为型模式
描述算法和对象间职责的分配
包括:模板方法模式(Template Method)、命令模式(Command)、迭代器模式(Iteratior)、观察者模式(Observer)、中介者模式(Mediator)、备忘录模式(Memento)、 解释器模式(Interpreter)、状态模式(State)、策略模式(Strategy)、职责链模式(Chain of Responsibility)、访问者模式(Visiter)
设计模式vs重构
设计模式是重构的目标,重构是达到目标的手段;
重构并不排斥提前设计,重构并不是不需要设计;
合理的提前设计 + 重构来不断的改进设计 ==〉趋近于优秀的系统
软件工程&软件测试
软件测试:在软件投入生产性运行之前,对软件需求分析、设计规格说明和编码的最终复审。
软件工程:将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。
软件
计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。
软件生存期
一个软件从提出开发要求开始直到该软件报废为止的整个时期。包括软件定义、软件开发和运行维护。
软件定义时期三阶段:问题定义、可行性分析、需求分析
软件开发时期四阶段:概要设计、详细设计、编码、测试
软件工程方法三要素
方法、工具和过程
软件开发过程
问题定义、需求开发、软件设计、软件构造、软件测试
常用生存期模型
瀑布模型、V模型、原型模型、增量模型、渐进式阶段模型、螺旋式模型、敏捷模型
软件需求
用户对软件的功能和性能的要求。
软件需求三层次:业务需求、功能需求和用户需求。
需求建模基本方法:原型法、结构化分析方法、面向对象的用例分析法、功能列表法。
软件测试(过程、黑盒、白盒)
软件测试过程:单元测试、集成测试、确认测试、系统测试
黑盒测试:把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。 等价类划分、边界值分析属于黑盒测试
白盒测试:对软件的过程性细节做细致的检查。逻辑覆盖(语句、判定、判定-条件、条件组合、路径)属于白盒测试
项目管理
定义:项目管理是就是运用系统理论和管理方法,通过一个临时性的专门的柔性组织,对项目及其资源进行计划、组织、协调和控制,以实现项目目标的管理方法;
项目管理对象:人员、产品、过程、项目;
项目是一次性的,日常运作是重复性的;
项目管理三要素:时间、质量、成本;
项目管理五个过程:启动、计划、控制、执行、结束。
项目是一个组织为实现自己既定的目标,在一定的时间、人员和其它资源的约束下所开展的一种有一定独特性、一次性和风险性的工作
其他
面向对象分析的三个模型:用例模型、对象模型、交互模型
项目组织结构主要类型:职能型、项目型、矩阵型
软件体系结构:具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。
MVC框架:模型—视图—控制器(model-view-controller)框架
参考:
设计模式基础 - 小白个人成长记 - 博客园 (cnblogs.com)
Java设计模式之初学者笔记——设计模式基础讲解_忧伤的可乐鸡-CSDN博客
【大话设计模式】——浅谈设计模式基础 - yutingliuyl - 博客园 (cnblogs.com)
《王道程序员面试宝典》