摘要: 1. DLL简介 DLL即动态链接库(Dynamic-Link Library)的缩写,它相当于Linux下的共享对象。Window系统中大量采用了这种 DLL机制,甚至包括Windows 的内核的结构都很大程度依赖于DLL机制。Windows 下的 DLL文件和EXE文件实际上是一个概念,它们都是 阅读全文
posted @ 2020-12-24 18:03 Redwarx008 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 1.链接器驱动程序 大多数编译系统提供编译器驱动程序(compiler driver),它代表用户在需要时调用语言预处理器、编译器、汇编器和链接器。比如,要用GNU 编译系统构造示例程序,我们就要通过在shell中输人下列命令来调用GCC驱动程序: linux> gcc -og -o prog ma 阅读全文
posted @ 2020-12-22 22:50 Redwarx008 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 前言 ​ 由于QtQuick Controls 1 里的TableView存在严重的性能问题,且事实上QtQuick Controls 1已经处于废弃状态,在Qt5.12中,QtQuick Controls 2更新了 TableView 组件,但新的TableView现在没有定义表头的接口,需要开发 阅读全文
posted @ 2020-11-17 22:05 Redwarx008 阅读(1610) 评论(0) 推荐(0) 编辑
摘要: 动机 在软件构建的过程中,由于需求的改变,某些类层次结构中常常需要增加新的行为(方法),如果直接在基类中做这样的更改,将会给子类带来很繁重的变更负担,甚至破坏原有设计。 如何在不更改类层次结构的前提下,在运行时根据需要透明地为类层次结构上的各个类动态添加新的操作,从而避免上述问题? 模式定义 表示一 阅读全文
posted @ 2020-02-14 01:17 Redwarx008 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 动机 在软件构建过程中,“行为请求者”与“行为实现者通常呈现一种紧耦合。但在某些场合——比如需要对行为进行”记录、撤销、事务“等处理,这种无法抵御变化的紧耦合是不适合的。 在这种情况下,如何将行为请求者与行为实现者解耦? 将一组行为抽象为对象,可以实现二者之间的松耦合。 定义 将一个请求(行为)封装 阅读全文
posted @ 2020-02-11 19:58 Redwarx008 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 动机 在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接受者,如果显示指定,将必不可少地带来请求发送者与接受者的紧耦合。 如何使请求的发送者不需要指定具体的接受者?让请求的接受者自己在运行时来处理请求,从而使两者解耦。 模式定义 使多个对象都有机会处理请求,从而避免请求的 阅读全文
posted @ 2020-02-10 21:44 Redwarx008 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 动机 在软件构建过程中,,集合对象内部结构常常变化各异。但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部客户代码透明地访问其中包含的元素;同时这种“透明遍历”也为“同一种算法在多种集合对象上进行操作”提供了可能。 定义 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露(稳定) 阅读全文
posted @ 2020-02-07 12:07 Redwarx008 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 动机 在某些情况下,客户代码过多地依赖对象容器复杂的内部实现结构,对象容器内部实现结构(而非抽象接口)的变化将引起客户代码的频繁变化,带来了代码难以维护、扩展的弊端。 如何将“客户代码与复杂的对象容器结构”解耦?让对象容器自己来实现自身的复杂结构,从而使得客户代码就像处理简单对象一样来处理复杂的对象 阅读全文
posted @ 2020-02-07 11:17 Redwarx008 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 动机 在软件构建过程中,某些对象的状态在转换过程中,可能由于某种需要,要求程序能够回溯到对象之前处于某个点时的状态。如果使用一些公用接口来让其他对象得到对象的状态,便会暴露对象的细节实现。 如何实现对象状态的良好保存与恢复?但同时又不会因此而破坏对象本身的封装性。 定义 在不破坏封装性的前提下,捕获 阅读全文
posted @ 2020-02-06 00:11 Redwarx008 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 动机 在软件构建过程中,某些对象的状态如果改变,其行为也会随之发生变化,比如文档处于只读状态,其支持的行为和读写状态支持的行为就可能完全不同。 在实际开发中,我们经常会遇到这种情况;一个对象有多种状态,在每一个状态下,都会有不同的行为。那么在代码中我们经常是这样实现的。 当我们增加新的状态类型时,我 阅读全文
posted @ 2020-02-03 17:10 Redwarx008 阅读(94) 评论(0) 推荐(0) 编辑