03 2020 档案
C++设计模式——适配器模式Bridge-Pattern
摘要:动机(Motivation) 由于应用环境的变化,常常需要将”一些现存的对象“放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足。 如何应对这些”迁移的变化“? 模式定义 将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
C++设计模式——桥接模式Bridge-Pattern
摘要:动机(Motivation) 由于某些类型的固有的实现逻辑,使得它们具有两个变化的维度,乃至多个纬度的变化。 如何应对这种“多维度的变化”?如何利用面向对象技术来使得类型可以轻松地沿着两个乃至多个方向变化,而不引入额外的复杂度? 模式定义 将抽象部分(业务功能)与实现部分(平台实现)分离,使它们都可
不想写博客?那试试日记吧!
摘要:一、背景 昨天博客园的园龄达到了两年,原来我也是一个老园友了,大一下学期开始写博客整理一些ACM题解,现在使用博客园主要是为了整理一些学习笔记,然后顺道做一些分享,使自己时时刻刻保持一种既有输入又有输出的状态。 之前我一直提倡一种观念,有点想法就可以写博客,写一些自己对某些问题的理解也好,写一下知识
C++设计模式——代理模式Proxy-Pattern
摘要:动机(Motivation) 在面向对象系统中,有些对象由于某种原因(比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程外的访问等), 直接访问会给使用者、或者系统结构带来很多麻烦。 如何在不失去透明操作对象的同事来管理/控制这些对象特有的复杂性?增加一层间接层是软件开发中常见的解决方式
曲线曲面积分的关系
摘要:一、背景 这个周末一直在鼓捣曲线曲面积分的一些题目,个人其实感觉这应该是高等数学中对科研最有用的内容了。学院在安排专业培养的时候给我们17级没有设置大学物理,后面18级恰巧赶上工程认证,安排上了大学物理,当时觉得我们真庆幸,现在来看我要是有点大学物理的知识,对理解曲线曲面积分应该会有很大的帮助。我在
C++设计模式——享元模式Flyweight-Pattern
摘要:动机(Motivation) 在软件系统采用纯粹对象方案的问题在于大量细粒度的对象会很快充斥在系统中,从而带来很高的运行时代价——主要指内存需求方面的代价。 如何在避免大量细粒度对象问题的同时,让外部客户程序仍然能够透明地使用面向对象的方式来进行操作? 模式定义 运行共享技术有效地支持大量细粒度的对
C++设计模式——单件模式Singleton-Pattern
摘要:动机(Motivation) 在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。 如何在运行时根据需要透明地更改对象的算法?将算法与对象本身解耦,从而避免上述问题? 模式定义 定义一系列算法,
C++设计模式——观察者模式Observer-Pattern
摘要:动机(Motivation) 在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对 象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。 使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系
计算机网络——物理层的几个概念
摘要:一、码元 根据百度百科被锁定词条“码元”给出的解释 在数字通信中常常用时间间隔相同的符号来表示一个二进制数字,这样的时间间隔内的信号称为(二进制)码元。 而这个间隔被称为码元长度。值得注意的是当码元的离散状态有大于2个时(如M大于2个) 时,此时码元为M进制码元。 一码元可以携带多个比特的信息量。例
C++设计模式——策略模式Strategy-Pattern
摘要:动机(Motivation) 在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。 如何在运行时根据需要透明地更改对象的算法?将算法与对象本身解耦,从而避免上述问题? 模式定义 定义一系列算法,
C++ 虚函数和友元
摘要:虚函数具有动态联编性,在类族中有强大功能;友元函数具有跨类访问的功能,本质却是一种对封装的破坏。 先看这样一个例子: #include<iostream> using namespace std; class A; class B { private: int x; void print() { c
C++设计模式——模板方法模式Template-Pattern
摘要:动机(Motivation) 在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)而无法和任务的整体结构同时实现。 如何在确定稳定操作结构的前提下,来灵活应对各个子步骤的变化或者晚期实现需求? 模式定义 定义一个