- 博客(23)
- 资源 (2)
- 收藏
- 关注
转载 编码原则十日谈
前言为什么写这篇文章编写本文档的最初目的,是为研究院平台研发一部制定一套C++编码规范,以提高编码质量,进而提高软件产品的质量。在下笔之前本人一直在思考,为什么以前也有编码规范,但一直没有很好的效果呢?其实制定编码规范容易,执行编码规范难,难在要先让大家从心里接受编码规范,彻底理解编码规范的重要性。正是因为这个原因,在本文中,并没有真正灌输具体的编码规范,而是从根本的角度分析编码规范的必要性,...
2020-04-01 17:05:36 491
转载 23种设计模式(7):中介者模式
定义:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。类型:行为类模式类图:中介者模式的结构 中介者模式又称为调停者模式,从类图中看,共分为3部分: 抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去实现。中介者实现
2012-10-08 17:08:22 631
转载 23种设计模式(6):模版方法模式
定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。类型:行为类模式类图: 事实上,模版方法是编程中一个经常用到的模式。先来看一个例子,某日,程序员A拿到一个任务:给定一个整数数组,把数组中的数由小到大排序,然后把排序之后的结果打印出来。经过分析之后,这个任务大体上可分为两部分,排序和打印,打印功能好
2012-10-08 15:09:51 581
转载 23种设计模式(5):原型模式 .
定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。类型:创建类模式类图:原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件:实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clone方法。在ja
2012-09-26 17:31:46 735
转载 23种设计模式(4):建造者模式
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。类型:创建类模式类图:四个要素产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。抽象建造者:引入抽象建造者的目的,是
2012-09-26 15:40:27 675
转载 23种设计模式(3):抽象工厂模式
定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。类型:创建类模式类图:抽象工厂模式与工厂方法模式的区别 抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常一个产品结构,表现为一个接口或者抽
2012-09-26 11:01:34 720
转载 23种设计模式(2):工厂方法模式 .
定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。类型:创建类模式类图:工厂方法模式代码interface IProduct { public void productMethod();}class Product implements IProduct { public void productMetho
2012-09-26 10:45:48 835
转载 23种设计模式(1):单例模式 .
定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。类型:创建类模式类图:类图知识点:1.类图分为三部分,依次是类名、属性、方法2.以>结尾的为注释信息3.修饰符+代表public,-代表private,#代表protected,什么都没有代表包可见。4.带下划线的属性或方法代表是静态的。5.对类图中对象的关系不熟悉的朋友可以参考文章:设计模式
2012-09-22 16:21:42 862
转载 设计模式六大原则(6):开闭原则 .
定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。 开闭原则是面向对象设计中
2012-09-22 16:16:44 481
转载 设计模式六大原则(5):迪米特法则
定义:一个对象应该对其他对象保持最少的了解。问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。解决方案:尽量降低类与类之间的耦合。 自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。低耦合的优点不言而喻,但是怎么样编程才能做
2012-09-22 16:15:40 500
转载 设计模式六大原则(4):接口隔离原则 .
定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。举例来说明接口隔离原则:(图1 未遵循接
2012-09-22 16:12:00 396
转载 设计模式六大原则(3):依赖倒置原则 .
定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I间接
2012-09-22 16:11:11 541
转载 设计模式六大原则(2):里氏替换原则 .
肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型
2012-09-22 16:07:21 365
转载 设计模式六大原则(1):单一职责原则
定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T2时,也
2012-09-22 16:01:11 386
转载 虚函数、多态、纯虚函数及接口
1. 虚函数 虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。作用是实现动态联编,也就是在程序的运行阶段动态地选择合适的成员函数,在定义了虚函数后,可以在基类的派生类中对虚函数重新定义,在派生类中重新定义的函数应与虚函数具有相同的形参个数和形参类型。以实现统一的接口,不同定义过程。如果在派生类中没有对虚函数重新定义,则它继承其基
2012-05-19 09:37:14 733
原创 多线程
1. 程序、进程和线程 程序是计算机指令的集合,它以文件的形式存储在磁盘上。进程通常被定义为一个正在运行的程序的实例,是一个程序在其自身的地址空间中的一次执行活动。 进程是资源申请、调度和独立运行的单位,使用系统中的运行资源。
2011-10-01 19:06:04 376
原创 动态链接库
动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。1. DLL入口点在创建 DLL 时,可以有选择地指定入口点函数。当进程或线程将它们自身附加到
2011-09-25 16:06:37 379
原创 ActiveX控件
1. 概念ActiveX控件等价于以前的OLE控件或OCX。一个典型的控件包括设计时和运 行时的用户界面,唯一的IDispatch接口定义控件的方法和属性,唯一的 IConnectionPoint接口用于控件可引发的事件。2. 控件框架 图
2011-09-24 20:14:29 475
原创 套接字
套接字端口,使多个TCP连接和多个应用程序传输数据。常用的TCP/IP协议有3种套接字类型。流套接字(SOCK_STREAM),面向连接、可靠的数据传输服务;数据包套接字(SOCK_DGRAM),一种无连接的服务;原始套接字(SOCK_RAW),与标准套接字的区别在于可以读写
2011-09-22 20:11:23 352
原创 又要开始我的博客生活
这是我的第二个博客了,忘了之前在大学的时候什么时候写过一阵子,后面因为找工作等事情,就没继续下去了,到现在甚至连自己的博客都忘了。 在看了文章《给年轻程序员的几句话》后,又想好好的写写博客,希望能和网上的朋友互相学习,能认识到更多的朋友和学到更多的技术。现在我要好
2011-09-18 15:21:39 372
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人