- 博客(11)
- 收藏
- 关注
原创 工厂方法模式(Factory Method)
定义工厂方法模式:定义一个用于创建对象的接口,让子类确定实例化哪一个类。工厂方法是一个类的实例化延迟到其子类例如:计算器设计 应用场景工厂模式是把项目当中的变化点抽取封装出来.至于哪些是变化点,哪些该抽象需要开发者自行观察和预测.类不知道自己要创建哪一个对象类用它的子类来指定创建哪个对象客户需要清楚创建了哪一个对象实例abstract class Car...
2018-09-12 10:48:31 234
原创 代理模式(Proxy)
定义代理模式,为其它对象提供一种代理以控制对这个对象的访问应用场景1.远程代理:也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。 当客户端对象需要访问远程主机中的对象时可以使用远程代理。2.虚拟代理:是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。 当需要用一个消耗资源较少的对象来代表一个消耗资源较多的对象...
2018-09-11 11:46:57 333
原创 装饰者模式(Decorator)
定义装饰模式,动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活Component:是定义一个对象接口,可以给这些对象动态的添加职责。ConcreteComponent:是定义了一个具体的对象,也可以个这个对象添加一些职责。Decorator:装饰抽象类,继承了Component,从外类来扩展Component类的功能,但对于Component来说,...
2018-09-10 15:10:57 321
原创 策略模式
定义它定义了算法家族,分别封装起来,让他们之间可以互相交换,此模式让算法的变化,不会影响到使用算法的用户找出变化点,封装变化点是我们面向对象的一种重要的思维方式应用场景1.针对同一类型问题的多种处理方式,仅仅是具体行为有差别时; 2.需要安全地封装多种同一类型的操作时; 3.出现同一抽象类有多个子类,而又需要使用 if-else 或者 switch-case 来选择具体子类时。...
2018-08-20 11:19:06 170
原创 简单工厂模式
定义定义一个工厂类,它可以根据传入参数的不同来对不同的产品类进行实例化。被创建的产品类通常具有共同的父类。设计模块通常如下几部分:抽象产品类(或者接口):通常为将具体产品类公共的代码进行抽象和提取后封装在一个抽象产品类中(产品类中提取出来公共业务方法)具体产品类:创建不同的产品工厂类:根据传入的产品参数的不同,来实例化对应的产品类应用场景客户端不知道它要创建的具体是哪一个...
2018-08-12 02:39:11 236
原创 2.回溯法
基本概念回溯法思路的简单描述是:把问题的解空间转化成了图或者树的结构表示,然后使用深度优先搜索策略进行遍历,遍历的过程中记录和寻找所有可行解或者最优解。 基本思想类同于:图的深度优先搜索二叉树的后序遍历基本思想及策略在包含问题的说有解的解空间树中,按照深度优先搜索的策略,从根结点出发深度搜索解空间树。当搜索到某一结点时,要先判断该结点是否包含问题的解,如果包含,就从该...
2018-03-16 16:33:07 584
原创 1.分治法
基本概念字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)……基本思想及策略基本思想:将一个问题,分解为多个子问题,递归的去解决子问题,最终合并为问题的解策略:...
2018-03-10 11:59:18 519
翻译 3 .最长的子串不重复字符
给定一个字符串,找到最长的子字符串的长度,不重复字符。例子:给定”abcabcbb”的答案是”abc”,长度是3。给定”bbbbb”的答案是”b”,长度为1。给定”pwwkew”的答案是”wke”,长度为3.请注意,答案必须是一个子字符串,”pwke”是一个子序列,而不是一个子字符串。2滑动窗口[接受] 算法天真的做法是非常简单的。但是太慢了。那么我们如何优化呢?在天真的方法中,我们重复检查一个子
2018-01-09 22:16:20 268
原创 栈与队列
通常称,栈和队列是限定插入和删除只能在表的“端点”进行的线性表。 栈和队列是两种操作受限的线性表,是两种常用的数据类型。栈栈的概念:栈是仅限制在表尾进行插入和删除操作的特 殊线性表,限制操作的表尾端称为“栈顶”, 另一 端称为“栈底”栈是“后进先出”的线性表(LIFO)或 “先 进后出”的线性表(FILO)3 .基本操作:a)栈的置空操作:clear(); b)判空操
2018-01-09 15:28:05 384
原创 2.添加两个数字
给你两个非空链表,表示两个非负整数。数字以相反的顺序存储,每个节点包含一个数字。添加这两个数字并将其作为链接列表返回。您可以假定这两个数字不包含任何前导零,除了数字0本身。例:输入:(2→4→3)+(5→6→4) 输出: 7→0→8 说明: 342 + 465 = 807。答案:public
2018-01-08 23:03:07 475
原创 线性表
线性表及其基本操作线性表的定义:一个线性表(LinearList)是由n(n≥0)个数据元素(结点)所构成的有限序列。线性表逻辑地表示为:(a0,a1,…,an-1)。其中,n为线性表的长度,n=0时为空表。称i为ai在线性表中的位序号。线性表的结构特点 a)它由n个同类型的元素组成; b) 有且仅有一个第一个元素和最后一个元素; c) 每个元素除第一个元素和最后一个元素之外,
2018-01-08 16:07:43 374
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人