摘要: 结构型模式 8)组合模式 当需要以树形结构来表示部分 整体的层次结构时使用。 组合模式中只有一种角色,就是要表示的对象。 阅读全文
posted @ 2019-12-09 21:20 corineru 阅读(160) 评论(0) 推荐(0)
摘要: 结构型模式 7)桥接模式 桥接模式在适配器模式上做了一定的扩展。 桥接是计算机网络中的用语,本意是指通过网桥把两个局域网连接在一起。 假如同时有A和B两个抽象类,在A中包含了B的指针,那么就好像把A和B两个类结合在了一起,于是叫做桥接模式。 例如葡萄,可以有青葡萄,紫葡萄,而酒可以有低度数酒,高度数 阅读全文
posted @ 2019-12-09 20:56 corineru 阅读(243) 评论(0) 推荐(0)
摘要: 结构型模式 6)适配器模式 假设类A想要调用类B中的某个方法,为了避免重写,可以用这个模式。 有两种方法可以用来实现这种复用。 第一种是 类适配器 ,利用多重继承的方式实现代码复用。 第二种是 对象适配器 ,利用组合的方式,在类A中加入类B的指针,然后调用B的方法。 类适配器 对象适配器类 阅读全文
posted @ 2019-12-08 11:02 corineru 阅读(197) 评论(0) 推荐(0)
摘要: 创建型模式 5)原型模式 这种模式主要是用于获取当前实例的拷贝。 假如当前基类有很多派生类,而我们只有基类指针而无法确定指向对象时,是无法直接执行拷贝动作的。因为拷贝时需要显式调用该派生类的拷贝构造函数,也就必须要确定派生类的类型。 为了解决这个问题,在基类中添加clone方法,通过return n 阅读全文
posted @ 2019-12-07 15:09 corineru 阅读(175) 评论(0) 推荐(0)
摘要: 创建型模式 4)建造者模式 一共涉及到三个类:产品类,建造者类,用户类 产品类: 非抽象类 。就是指某种产品,产品有一些属性待设定 建造者类: 需要构造抽象类 ,来扩展出各种各样的建造者类,每一种产品对应着一种建造者类。并且建造类能够直接生产产品类(能够 new product()) 用户类: 非抽 阅读全文
posted @ 2019-12-07 10:56 corineru 阅读(138) 评论(0) 推荐(0)
摘要: 创建型模式 3)单例模式 单例模式主要用于只需要一个实例,例如日志系统,一个项目应该只有一份日志。 主要技巧在于: 将构造函数和拷贝构造函数设为私有,所以无法直接通过new来创建对象 提供一个获取唯一实例的接口,这样外部可以通过这个接口创建对象 将该实例设为static,这样就能保证只有一份实例 注 阅读全文
posted @ 2019-12-06 23:58 corineru 阅读(152) 评论(0) 推荐(0)
摘要: 最近打算总结一下设计模式(希望可以坚持写完...)。 设计模式大体上可以分为三种: 1)创建型(5种) 具体包括:工厂方法(包括简单工厂),抽象工厂,单例,建造者,原型 2)结构型模式(7种) 具体包括:适配器,桥接,组合,装饰器,代理,外观,享元 3)行为型模式(11种) 具体包括:策略模式,模版 阅读全文
posted @ 2019-12-06 22:14 corineru 阅读(451) 评论(0) 推荐(0)
摘要: 最近在linux上编译C++的程序,发现很多明明已经实现了的友元类型的operator运算符总是提示 no match for operator xxx,也就是找不到函数的实现。 但是把友元函数换成类成员函数就没有问题,这确实有点诡异。 经过一番查找发现,原来在类中声明为友元函数的声明只是对权限的声 阅读全文
posted @ 2019-12-04 16:04 corineru 阅读(2708) 评论(0) 推荐(0)
摘要: 最近开始看c++经典著作《effective c++》,总结了一些要点。 关键字的使用 1 自定义类的构造函数应该加上explicit,目的是为了防止隐式转换。除非有好的理由说明需要隐式转换,否则默认加上explict防止出现没有预料到的情况。 2 对于内置类型(int, double)和STL来说 阅读全文
posted @ 2019-08-22 21:18 corineru 阅读(201) 评论(0) 推荐(0)
摘要: 最近做了几道动态规划题,发现了其中一些规律,认真复盘一下。 先来看几道题。 【1 机器人走方格】有一个XxY的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。请设计一个算法,计算机器人有多少种走法。注意网格中有些障碍点是不能走的。给定一个int[][] map(C++ 中为vec 阅读全文
posted @ 2019-08-05 21:55 corineru 阅读(616) 评论(0) 推荐(0)