- 博客(42)
- 收藏
- 关注
转载 设计模式之访问者模式
大多时候并不需要访问者模式,担当一旦你需要访问者模式时,那就是真的需要了。事实上,我们很难找到数据结构不变的情况,所以用访问者模式的机会也就不太多。
2017-08-07 20:09:26
222
转载 设计模式之解释器模式
1. 解释器模式:给定一个语言,定义它文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。比如:在字符串中搜索匹配字符或判断一个字符串是否符合规定格式。
2017-08-07 10:01:52
200
转载 设计模式之里氏代换原则
1. 里氏代换原则: 继承包含这样一层含义:父类中凡是已经实现好的方法(相对于抽象方法而言),实际上是在设定一系列的规范和契约,虽然它不强制要求所有的子类必须遵从这些契约,但是如果子类对这些非抽象方法任意修改,就会对整个继承体系造成破坏。而里氏替换原则就是表达了这一层含义。
2017-08-04 20:26:28
249
转载 设计模式之合成复用原则
聚合,表示一种弱的“拥有”关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分;合成,表示一种强的“拥有”关系,体现了严格的部分和整体关系,部分和整体的生命周期一样。比如说:大雁有两个翅膀,这就是合成关系。大雁和雁群,是聚合关系。
2017-08-04 17:40:38
533
转载 设计模式之享元模式
1. 享元模式:运用共享技术有效地支持大量细粒度的对象。 享元模式可以避免大量非常相似类的开销。在程序设计中,有时需要生成大量细粒度的类实例来表示数据。如果能发现这些实例除了几个参数外基本上都是相同的,有时就能够大幅度的减少需要实例化的类的数量。如果能把那些参数移到类实例的外面,在方法调用时将他们传递进来,就可以通过共享大幅度减少单个实例的数目。
2017-08-04 16:49:02
168
转载 设计模式之职责链模式
职责链模式注意:比较长的方法,多条的分支,这些其实都是代码的坏味道。1. 职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
2017-08-03 19:45:41
201
转载 设计模式之命令模式
1. 命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销操作。
2017-08-03 17:01:20
248
转载 设计模式之桥接模式--合成复用原则
1.合成/聚合复用原则:尽量优先使用合成/聚合,尽量不要使用类继承。盲目使用继承会造成麻烦。所以在使用继承时,一定要在是“Is-a”的关系时,再考虑使用。手机软件显然不是一个,即不是a,所以不能从手机品牌向下继承。如下图是不对的。
2017-08-02 22:31:32
546
转载 设计模式之组合模式
1. 组合模式:将对象组合成树形结构以表示‘部分---整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
2017-08-01 16:52:22
204
转载 设计模式之备忘录模式
1. 备忘录模式:备忘录:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
2017-08-01 11:27:12
193
转载 设计模式之适配器模式
1. 适配器模式:对象适配器将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。简单来说,就是需要的东西就在面前,但却不能使用,短时间内又无法改造它,于是我们就想办法适配它。翻译就是一种适配器。可以让不会英语的人听懂说英语人的意思。
2017-08-01 10:25:20
150
转载 设计模式之状态模式
1. 状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是,当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。
2017-07-31 16:51:46
192
转载 设计模式之抽象工厂模式
抽象工厂模式是工厂方法模式的升级版本,用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常一个产品结构,表现为一个接口或者抽象类,也就是说,工厂方法模式提供的所有产品都是衍生自同一个接口或抽象类,而抽象工厂模式所提供的产品则是衍生自不同的接口或抽象类。在抽象工厂模式中,有一个产品族的概念:所谓的产品族,是指位于不同产品等级结构中功能相关联的产品组成的家族。抽象工厂模式所提供的一系列产品就组成一个产品
2017-07-27 19:39:53
170
转载 设计模式之观察者模式
观察者模式注:1. 观察者模式: 又叫---发布---订阅模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生改变时,会通知所有观察者对象,使得它们能够自动更新自己。
2017-07-27 11:24:34
171
转载 设计模式之建造者模式
建造者模式通常包括下面几个角色:builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建。ConcreteBuilder:实现Builder接口,针对不同的商业逻辑,具体化复杂对象的各部分的创建。 在建造过程完成后,提供产品的实例。Director:调用具体建造者来创建复杂对象的各个部分,在指导者中不涉及具体产品的信息,只负责保证对象各部分完整创建或按某种顺序创建。Product:要创建的复杂对象。
2017-07-26 22:32:31
202
转载 设计模式之-外观模式
设计模式之--外观模式1. 外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个外观接口,这个接口使得这一子系统更加容易使用。
2017-07-26 11:39:26
149
转载 设计模式之模板方法模式
模板方法模式注:开始写出的最简单的类的代码中,找到类似的代码,进行泛化,从而抽象为接口类。如果用了继承,并肯定这个继承有意义,就应该要成为子类的模板,所有重复的代码都应该要上升到父类去,而不是让每个子类都去重复。 1. 模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
2017-07-25 17:06:59
164
转载 设计模式之工厂方法模式
简单工厂模式最大的优点在于,工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。比如计算器,客户端不用管该用哪个类的实例,只需要吧“+”给工厂,工厂自动给出相应实例,客户端只要做运算就可以了。工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化哪一个类。
2017-07-25 11:02:43
163
转载 设计模式之单一职责原则&开放-封闭原则
1. 单一职责定义:就一个类而言,应该仅有一个引起它变化的原因。通俗的说,即一个类只负责一项职责。1. 开放-封闭原则定义:软件实体(类、模块、函数等)可以扩展,不可修改。对于扩展是开放的,对于更改是封闭的。
2017-07-23 22:04:05
351
转载 设计模式之策略模式
1. 策略模式:面对算法时常改动时定义一系列的算法家族,把每一个算法分别封装起来, 并且使它们可相互替换。本模式使得算法的变化,不会影响到使用算法的客户,且不需要修改策略类。
2017-07-23 20:37:22
219
转载 设计模式之简单工厂模式
简单工厂模式 简单工厂模式解决的问题是如何去实例化一个合适的对象。简单工厂模式的核心思想就是:有一个专门的类来负责创建实例的过程。
2017-07-23 11:10:30
159
原创 OpenGL-渲染光照球体
3.光照注意:a. OpenGL至少会支持8个光源,即GL_LIGHT0到GL_LIGHT7。但是开启过多的光源会导致程序运行速度下降。b. GL_AMBIENT、GL_DIFFUSE、GL_SPECULAR这三种属性是光源和材质所共有的,如果某光源发出的光线照射到某材质的表面,则最终的漫反射强度由两个GL_DIFFUSE属 性共同决定,最终的镜面反射强度由两个GL_SPECULAR属性共同决定。
2017-07-22 13:11:41
5758
原创 OpenGL-雾Fog-实例
2.雾2.1 glEnable(GL_FOG);//启用雾效果2.2 glFog*()函数,设置用于控制雾浓度的方程式;2.3 glHint(target,mod);· GL_FOG_HINT值,指定雾化计算的精度;
2017-07-21 22:00:03
1609
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人