- 博客(18)
- 资源 (10)
- 收藏
- 关注
原创 C++ API设计—— API特征
APT特征:优质的API应该设计精巧且实用性强,它不仅能带来愉悦的使用体验,且能与各种应用程序完美融合,甚至让使用者感觉不到其存在。问题域建模:对问题域进行很好的抽象。 隐藏实现细节:1)物理隐藏(声明与定义):将内部细节(.cpp)与公有接口(.h)分离,存储在不同的文件中。2)逻辑隐藏(封装):将API的公有接口与其底层实现分离的过程。 最小完备性:若无必要,勿增实体1)不要过度承诺精简AP
2017-06-30 15:05:12 759
原创 C++ API设计—— API简介
APT:提供了对某个问题的抽象,以及客户与解决该问题的软件组件之间进行交互的方式。 API设计上的不同:1)要保证有良好的设计2)精心编写、术语一致且内容全面的文档3)有一套完整的回归测试验证并未改变所需的API行为为什么使用API(代码复用 + 并行开发):1)更健壮的代码2)延长软件寿命3)模块化4)减少代码重复5)易于改变实现6)易于优化避免使用API的几种情况许可证限制功能不匹配缺
2017-06-29 11:42:49 1438
原创 设计模式(行为变化)—— 命令模式
命令模式:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。场景还原(过年购票):我们在12306上,单击购票,这是一个请求,12306将这个请求封装为一个对象,在12306还没有上线排队系统时,你买票是这样的:你不停的用鼠标点击12306网站上的购票按钮,直到你买到了票;对于你的每一次点击,服务器都要进行处理,做出响应,告诉你,有没有买到票;这样
2017-06-28 11:39:53 316 2
原创 设计模式(数据结构)—— 组合模式
组合模式:允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。场景还原(公司组织架构): 上图是一个公司的组织结构图,总部下面有多个子公司,同时总部也有各个部门,子公司下面有多个部门。如果对这样的公司开发一个OA系统,作为程序猿的你,如何设计这个OA系统呢?UML类图阐述: 模式结构:1)Component:为组合中的对象声明接口;在适
2017-06-27 11:33:49 712
原创 设计模式(数据结构)—— 迭代器模式
迭代器模式:提供一个方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。场景还原(餐馆合并):煎饼屋和午餐店合并后需要定制一份新的餐单,但由于煎饼屋的原菜单是用链表实现,而午餐点原菜单是用数组实现(他们的定义如下所示),所以打印新餐单的时候需要分别循环遍历原餐单中的菜单项。如果还有第三家餐厅加入,我们还需要第三个循环,意味着要写很多重复代码。解决方法利用迭代器模式。UML类图阐述:
2017-06-26 11:13:01 433
原创 设计模式(状态变化)——状态模式
状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。场景还原(地铁口):地铁入口处,如果你放入正确的地铁票,门就会打开让你通过。在出口处也是验票,如果正确你就可以 ok,否则就不让你通过(如果你动作野蛮,或许会有报警(Alarm))。有限状态自动机(FSM)也是一个典型的状态不同,对输入有不同的响应(状态转移)。通常我们在实现这类系统会使用到很多的 Switch/Case
2017-06-23 11:41:14 450
原创 设计模式(接口隔离)——适配器模式
适配器模式:将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作。适配器让原本接口不兼容的类可以合作无间。场景还原(电源适配器):买笔记本电脑,买手机时,都有一个电源适配器,电源适配器又叫外置电源,是小型便携式电子设备及电子电器的供电电压变换设备,常见于手机,笔记本电脑上。它的作用是将家里的220V高电压转换成这些电子产品能工作的5V~20V左右稳定的低电压,使它们能正
2017-06-22 11:07:01 422
原创 设计模式(对象性能)——单件模式
单件模式:确保一个类只有一个实例,并提供一个全局访问点。场景还原(巧克力工厂):现代化的巧克力工厂具备计算机控制的巧克力锅炉,锅炉做的事,就是把巧克力和牛奶融在一起,然后送到下一个阶段,以制造成巧克力棒。锅炉控制器常用于防止不好的事情发生,例如,排出500加仑未煮沸的混合物,或者锅炉已经满了还继续放原料,或者锅炉内还没放原料就开始空烧。万一同时有多于一个的巧克力锅炉实例存在,可能发生哪些很糟糕的事
2017-06-21 11:42:17 413
原创 设计模式(对象创建)——创建者模式
创建者模式:使用多个简单的对象一步步构建成一个复杂的对象。场景还原(兰州拉面):某天去吃兰州拉面,他们有不同的套餐,套餐里包含的种类是一样的,都有一碗拉面,一份泡菜,一杯饮料。但是不同的套餐里这3样又都不是全部一样的,也许分量和品质有差别。此时我们就可以用建造者模式。客户根据套餐不同,跟收银员点了一份A套餐的拉面,另一名客户同时又点了一份B套餐的拉面。这时收银员把这两个单子转交给后台,其实也就是厨
2017-06-20 11:05:07 301
原创 设计模式(对象创建)——原型模式
原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。场景还原(找工作准备简历):假设没有打印设备,因此需手写简历,这些简历的内容都是一样的。这样有个缺陷,如果要修改简历中的某项,那么所有已写好的简历都要修改,工作量很大。随着科技的进步,出现了打印设备。我们只需手写一份,然后利用打印设备复印多份即可。如果要修改简历中的某项,那么修改原始的版本就可以了,然后再复印。原始的那份手写
2017-06-19 10:58:13 434
原创 设计模式(对象创建)——抽象工厂模式
抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。场景还原(操作系统的组件):在系统里a,b,c三个组件必须同时使用,但是a的同类 a1和a2这三种方法有共同特点但是是互斥的,b,b1,b2和c,c1,c2和a/a1/a2是一样的。就比如说创建在不同操作系统的视窗环境下都能够运行的系统时,Unix下面有unixButton和 unixText,Win下面也有winB
2017-06-16 14:11:11 321
原创 设计模式(对象创建)——工厂方法模式
工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。场景还原(披萨订购):Ethan需要从纽约披萨店订购披萨,Joel需要从芝加哥披萨店订购披萨。1)首先,Joel和Ethan需要取得比萨店的实例,Joel需要实例化一个ChicagoPizzaStore,而Ethan需要实例化一个NYPizzaStore.2)有了各自的PizzaStore,
2017-06-15 13:54:33 518
原创 设计模式(单一职责)——桥模式
装饰者模式:让抽象与实现相分离,让两者都能各自变化。模拟毛笔:现需要提供大中小3种型号的画笔,能够绘制5种不同颜色,如果使用蜡笔,我们需要准备3*5=15支蜡笔,也就是说必须准备15个具体的蜡笔类。而如果使用毛笔的话,只需要3种型号的毛笔,外加5个颜料盒,用3+5=8个类就可以实现15支蜡笔的功能。实际上,蜡笔和毛笔的关键一个区别就在于笔和颜色是否能够分离。即将抽象化(Abstraction)与实
2017-06-14 13:49:04 778
原创 设计模式(单一职责)——装饰者模式
装饰者模式:动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。喜欢喝咖啡的朋友们,通常都不会满足于原味。因此,在著名的星巴克,个人觉得一杯咖啡30多,纯粹是去为了装逼?我们会看到大家购买咖啡时,会要求在其中加入各种调料,比如蒸奶、豆浆、摩卡、奶泡……当这么多个性化的需求要被满足,我们不禁好奇它强大的订单系统是如何实现的。难道是设计成下面的鬼样子? 当然不行!!!能
2017-06-13 13:45:36 538 5
原创 设计模式(组件协作)——观察者模式
观察者模式:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。在目前这个信息爆炸的社会,从客户端到移动端,现在的年轻人更倾向于移动端(IOS工程师和Android工程师最近几年很火),每时每刻都有成百上千万条信息铺面而来,很想关掉所有电子设备,让自己稍微“清净一会儿”,可以猛一抬头,发现自己错过了“很多”,他们在说啥?666???于是乎,只能乖乖的捧
2017-06-12 13:34:21 412
原创 Understanding and Diagnosing Visual Tracking System
1.What is Visual Tracking?motion modelfeature extractorobservation modelmodel updaterensemble post-processor 2.Existing trackersKCF: High-Speed Tracking with KernelizedCorrelation FiltersLarge
2017-06-09 17:58:47 873
原创 设计模式(组件协作)——策略模式
策略模式定义了算法簇,分别封装起来,让它们之间可以互相替代,此模式让算法的变化独立于使用算法的用户。喜欢三国演义的朋友,都对诸葛亮这个神一般的军师赞誉有加。虽然事实上,除了出师表上刻画的鞠躬尽瘁死而后已的形象,小诸的计谋远没有那么的高深莫测,他更大程度上是一个政治家。扯远了,在三国演义中,有这样一段情节: 刘备利用周瑜、曹仁厮杀之际,乘虚袭取了南郡、荆州、襄阳,以后又征服了长沙等四郡。周瑜想
2017-06-09 11:44:00 463
原创 设计模式(组件协作)——模板方法
模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。用我自己的话讲,就是写文章,找到了一个模板,然后对着抄写。标题什么的不允许改变,该怎样就是怎样,具体到某个不同的部分,再自由发挥。再通俗易懂点,哥们儿,你只能遵从这个游戏规则,你翻不出老子的五指山,哇哈哈哈!有没有中宿命论的赶脚,不过,在这个快速消费的时代
2017-06-08 13:55:36 442
MiniTool分区软件
2023-07-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人