架构师训练营 No.2 周总结
软件开发简史:早在1700年代,德国人莱布尼兹就开始奇思怪想编程探索,19世纪中叶英国人Ada利用打孔纸带写出人类第一个软件程序,而计算机在100年之后才发明。科技发明受时代限制,人类的想象力和聪明才智可以超越时代。
形形色色的编程语言:汇编、早期Basic、结构化的Basic、Perl、C、C++、Java。
编程语言实质:
编程的目的:用计算机来解决现实世界的问题。
编程的过程:在计算机所能理解的模型“模型”(解空间)和现实世界(问题空间)之间建立一种联系。
编程的核心要素:
什么是面向对象编程?
面向对象 (Object Oriented,OO) 的思想对软件开发相当重要,它的概念和应用甚至已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD 技术、人工智能等领域。面向对象是一种 对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。
面向过程 (Procedure Oriented) 是一种 以过程为中心 的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是 封装、继承、类。
无论是在软件开发还是在实际工作中,深入地理解软件开发的思想都非常有必要。
面向对象的三要素(特征):
封装,封装就是事物抽象为类,把对外接口暴露,将实现和内部数据隐藏。
继承,继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。继承概念的实现方式有三类:实现继承、接口继承和可视继承。
多态,多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。实现多态,有二种方式,覆盖,重载。
面向对象设计的目的
强内聚,低耦合,从而使系统易扩展、更强壮、可移植、更简单。
设计模式
三大类23种基本设计模式
创建型模式,共五种:工厂方法模式(一个工厂类ReturnNew子类)、抽象工厂模式(一个厂一个子类)、单例模式(恶汉,懒汉)、建造者模式(组合)、原型模式(Cloneable浅接口,Serializable深接口)。
结构型模式,共七种:适配器模式(新接口用老实现类)、装饰器模式(同代理,增强)、代理模式(方法前后)、外观模式(计算机包括…)、桥接模式(中间表)、组合模式(树)、享元模式(共享池)。
行为型模式,共十一种:策略模式(Calculator子类)、模板方法模式(大象装冰箱)、观察者模式(观察者列表)、迭代子模式、责任链模式、命令模式(一层接一层)、备忘录模式(备忘录类包含被备忘录对象)、状态模式(IF)、访问者模式(访问外观模式)、中介者模式(join)、解释器模式(解释公式)。
框架VS工具
工具好比是搓衣板,框架好比是洗衣机,搓衣板只能搓衣服;洗衣机除了洗衣服还能脱水 甩干 加香 定时 定次...,工具其实只干了框架一部分的活,框架整体解决你的问题。
面向对象设计的基本原则
Single Responsibility Principle:单一职责原则
一个类应该只有一个发生变化的原因
Open Closed Principle:开闭原则
一个软件实体,如类、模块和函数应该对扩展开放,对修改关闭
Liskov Substitution Principle:里氏替换原则
所有引用基类的地方必须能透明地使用其子类的对象
Law of Demeter:迪米特法则
只与你的直接朋友交谈,不跟“陌生人”说话
Interface Segregation Principle:接口隔离原则
客户端不应该依赖它不需要的接口;类间的依赖关系应该建立在最小的接口上
Dependence Inversion Principle:依赖倒置原则
上层模块不应该依赖底层模块,它们都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象
总结:从计算机编程的发展历程,引发人类创新、创造性思考;而程序设计也逐步向规范化、工程化发展;设计模式使人们可以更加简单方便地复用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。
评论