架构模块
文章平均质量分 82
宇华
皓月满轮玉宇无尘千顷碧 紫箫一曲银河有焰万里春 上善若水
展开
-
android6.0 init进程main之klog
android6.0 init进程main之klog 对应代码android6.0_r72,kernel对应linux3.18前言klog_init();klog_set_level(KLOG_NOTICE_LEVEL);涉及文件/system/core/init/Init.cpp/system/core/libcutils/Klog.cmain()如下代码,直接注释说明其各个部分内容。klog_init()打开(创建文件) /dev/kmsg ,将文件句柄记录在 klog_原创 2021-08-23 12:40:59 · 653 阅读 · 0 评论 -
C++中不允许定义引用数组
首先,什么叫引用数组?顾名思义,就是一个数组,这个数组的每一个元素是一个引用。其次,C++中引用的本质是一个指针常量,编译过程中使用常指针作为引用的内部实现。int a;int * const p = &a;int &r = a; 可以这样理解 p 和 r 除了语法之外,其实质是完全等价的。另外:常量在定义时必须初始化,那么引用在定义时也同样必须初始化。原创 2015-07-02 08:39:25 · 4823 阅读 · 0 评论 -
九、构造与析构
C++中的构造函数如何给对象进行初始化?一般而言所有的对象都需要一个确定的初始状态解决方案 为每个类都提供一个public的initialize函数 对象创建后立即调用initialize函数进行初始化 (插入9-1.cpp) 上述解决方案initialize只是一个普通的函数,必须显示的调用 一旦由于失误的原因,对象没有初始化,那么结果将原创 2015-10-06 13:37:57 · 252 阅读 · 0 评论 -
4、多例模式(Multition)
单例模式只允许有一个工作者(new一次),多例模式允许有N个工作者(可以new N次),超过N的获取随机或者已某种规则返回N个实例中的一个。main{ 定义工作者甲指针 *pWorker1; (指定者一 找到工作者甲) 定义工作者甲指针 *pWorker2; (指定者二 找到工作者乙) 定义工作者甲指针 *pWorker3; (指定者二 找到工作者甲乙原创 2015-10-06 13:28:22 · 807 阅读 · 0 评论 -
5、工厂方法模式(FactoryMethod)
第一种分类:简单工厂模式 简单工厂模式,使用工厂的创建产品函数(参数为要创建的产品)创建产品。main{ 定义工厂指针 *pSimpleHumanFactory 定义产品指针 并使用工厂指针创建产品A赋值给产品指针 IHuman *pYellowHuman = pSimpleHumanFactory->CreateHuman("YellowHuman");原创 2015-10-06 13:44:31 · 243 阅读 · 0 评论 -
6、门面模式(Facade)
门面模式,为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这个子系统更容易使用。简单说,就是将复杂的逻辑封装起来,对外公开简单的接口,由客户调用。 main{ //正常调用: 定义工作者接口指针,并创建工作者,赋值给接口指针 ILetterProcess *pLetterProcess = new CLetterProc原创 2015-10-07 11:23:32 · 400 阅读 · 0 评论 -
7、抽象工厂模式(AbstractFactory)
客户需要一系列的多种产品,这些产品有都是由四个零件组成,其中三个零件a,b,c 需要工厂甲或工厂丙生产,零件d由工厂乙或者工厂丁生产。 首先客户给出产品清单:黄男,黄女,白男,白女,黑男,黑女。第一步:根据清单,所有的产品都有四个相同系列的零件组成,是通一种产品人,只是其规格不同。那么定义一个人的产品索引模板(产品指标表格):IHuman 第二步:原创 2015-10-07 11:24:18 · 271 阅读 · 0 评论 -
编译器对构造函数的调用
三种不同类的初始化方式 Test t1(5); //标准初始化方式Test t2 = 5; //拷贝构造函数 // 给Test(int i)前加explicit会报错Test t3 = test(5); //手动调用构造函数 //给Test(const Test& obj)前加explicit会报错在现代的编译器中这三种初始化方式是等价的。 C++原创 2015-10-14 14:38:10 · 503 阅读 · 0 评论 -
3、单例模式(Singleton)
只允许工作者甲(这一个工作者)来完成工作区域内所有的甲工作,不允许再指派完成甲工作的工作者(不能再new),那么不管谁需要完成甲工作,都必须去找工作者甲来完成。main{ 定义工作者甲指针 *pWorker1; (指定者一 找到工作者甲) 定义工作者甲指针 *pWorker2; (指定者二 找到工作者甲) pWorker1设置工作者甲的info信息为A; 指定...原创 2015-10-06 13:26:43 · 254 阅读 · 0 评论 -
1、Strategy策略模式
Strategy策略模式原创 2015-07-01 07:54:50 · 308 阅读 · 0 评论 -
9、模板方法模式(TemplateMethod)
模板方法模式其实就是有一个带有虚函数的基类,其实现了相关算法,其算法中包含了虚函数,因为这些函数需要子类来实现所以在基类中以虚函数呈现,以保证算法的正常编译。当实现了子类之后在使用时使用基类的指针指向子类,这样调用接口也一致。如汽车模型中有一下方法: void Run();protected: virtual void Start() = 0; virtual原创 2015-10-14 14:59:23 · 261 阅读 · 0 评论 -
2、代理模式(Proxy)
要完成一件工作,而是找其代理来完成,而不是直接调用工作者,代理和具体工作者继承同样的接口类,代理需要工作者作为参数来构造或者说初始化,让代理的各接口调用具体工作累对应的接口,从而调用代理的接口实质上就调用了工作者的接口。main{ 定义代理甲指针 *pProxyjia 创建代理类实体并赋值给指针 pProxyjia = new Proxyjia(new原创 2015-09-28 15:20:48 · 316 阅读 · 0 评论 -
8、适配器(Adapter)
其核心情况是,main的运行需要使用interface_need类接口,但是新的系统不能提供interface_need接口,不过有另一套接口interface_now类,interface_now可以完全实现interface_need接口的功能,那么将interface_now类接口转换成interface_need类接口形式。interface_need有一下几个接口:原创 2015-10-14 14:58:26 · 292 阅读 · 0 评论 -
10、建造者模式(Builder)
要生产一个可以带有设置某些属性的对象,可以直接产生,可以定义一个创建者,其提供设置接口函数,并提供对象获取接口,将某一类产品封装起来,后面需要此产品时只需要调用创建者的创建接口就可以了。另外可以进一步对创建者进行封装,将其封装成一个可以有多个预订设置的类(Director),这个类的每一个预订设置都提供一个创建接口,这样需要某个预订设置产品时只需要调用对应的接口就可以了。main(原创 2015-10-14 15:16:51 · 305 阅读 · 0 评论 -
11、桥梁模式(Bridge)
桥梁模式的模型: 火车 产品A 商人 赚钱 桥梁 产品B 产品属性原创 2016-04-11 17:28:13 · 294 阅读 · 0 评论 -
12、命令模式(command)
原始工作流程:命令人 找甲 让其做甲A--》甲B--》甲D (完成1任务) 找乙 让其做乙A--》乙C--》乙E (完成2任务) 找丙 让其做丙A--》丙C--》丙D (完成3任务)命令模式工作流程:(将每个任务封装成一个命令类原创 2016-04-11 17:57:53 · 248 阅读 · 0 评论 -
13、装饰模式(Decorator)
装饰模式,动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。假设张三的家长要查看张三的成绩,那么要通过学校成绩报告来查询,那么我们现在设定一下成绩报告。首先有成绩单类ISchoolReport(ISchoolReport时最终的数据来源模板,ISchoolReport基类模板) 基类可以查看整体报告,可以通过姓名查看个人成绩。每个年级的原创 2016-04-11 18:00:55 · 200 阅读 · 0 评论 -
14、迭代器模式(Iterator)
迭代器模式:宗旨提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。迭代器模式的本质就是迭代器,其实迭代器模式就是用迭代器来实现对元素(类或者变量等)的管理。图示: Project 类原创 2016-04-11 19:14:49 · 276 阅读 · 0 评论 -
15、组合模式(Composite)
组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合的使用具有一致性。main(),客户CCorpNode,抽象基类,实现基本信息CBranchNode,树枝节点,实现Addordinate()函数和GetSubordinate()函数CLeafNode,叶子节点,IsLeaf属性总是“true”说明:组合模式主要是实现在CB原创 2016-04-18 15:32:36 · 236 阅读 · 0 评论 -
16、观察者模式(Observer)
观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。main(),IObservable,被观察者接口CHanFeiZiObservable,被观察者韩非子IObserver,观察者接口CLiSiObserver,观察者李斯CZhouSiObserver观察者周斯说明:将观察者聚集到被观察者韩非子身边,韩非原创 2016-04-18 15:34:10 · 433 阅读 · 0 评论 -
17、责任链模式(ChainofResponsibility)
概念:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。main(),客户IWomen,发出请求者接口Women,请求者实现类Handler,处理请求抽象类Father,处理请求实现类,责任链之一Husband,处理请求实现类,责任链之二Son,处理请求实现类,责任链之三原创 2016-04-18 15:35:25 · 243 阅读 · 0 评论