第十七章.中介者模式 中介者模式也称为调解者模式或调停者模式,是一种行为型模式. 1.定义 中介者模式包装了一系列对象相互作用的方式.使得这些对象不必相互明显作用.从而使它们能够松散耦合.当某些对象之间的作用发生改变时.不会马上影响其它的一些对象之间的作用.保证这些作用能够彼此独立的变化. 2.使用场景 当对象之间的交互操作非常多且每一个对象的行为操作都依赖彼此时,为防止在改动一个对象的行为时.同一时候涉及非常多其它对象的行为,可使用中介者模式. 3.UML类图 (1)Mediator:抽象中介…
第十四章.迭代器模式 迭代器模式,又叫做游标模式.是行为型设计模式之中的一个.我们知道对容器对象的訪问必定会涉及遍历算法.我们能够将遍历的方法封装在容器中,或者不提供遍历方法,让使用容器的人自己去实现去吧. 这两种情况好像都能够解决这个问题. 然而在前一种情况.容器承受了过多的功能.它不仅要负责自己"容器"内的元素维护(加入.删除等等),并且还要提供遍历自身的接口:并且因为遍历状态保存的问题,不能对同一个容器对象同一时候进行多个遍历.另外一种方式倒是省事,却又将容器的内部细节暴露无遗.…
第十章.解释器模式 解释器模式是一种用的比較少的行为型模式.其提供了一种解释语言的语法或表达式的方式. 可是它的使用场景确实非常广泛,仅仅是由于我们自己非常少回去构造一个语言的文法,所以使用较少. 1.定义 给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子. (当中语言就是我们须要解释的对象,文法就是这个语言的规律,解释器就是翻译机.通过文法来翻译语言.) 2.使用场景 1.假设某个简单的语言须要解释运行并且能够将该语言中的语句表示为一个抽象的语法树时…
第二十章.适配器模式 适配器模式是结构型设计模式之中的一个,它在我们的开发中使用率极高,比方ListView.GridView以及RecyclerView都须要使用Adapter. 1.定义 适配器模式把一个类的接口变换成client所期待的还有一种接口,从而使原本因接口不匹配无法在一起工作的两个类能够在一起工作. 2.使用场景 (1)系统须要使用现有的类.但此类的接口不符合系统的须要.即接口不兼容. (2)想要建立一个能够反复使用的类.用于与一些彼此之间没有太大关联的一些类,包含一些可能在将来…
第十八章.代理模式 代理模式也称托付模式,是结构型设计模式之中的一个.是应用广泛的模式之中的一个. 1.定义 为其它对象提供一种代理以控制对这个对象的訪问. 2.使用场景 当无法或不想直接訪问某个对象或訪问某个对象存在困难时能够通过一个代理对象来间接訪问,为了保证client使用的透明性.托付对象与代理对象须要实现相同的接口. 3.UML类图 (1)Subject:抽象主题类.声明真实主题与共同接口方法,该类能够是抽象类或接口. (2)RealSubject:真实主题类(被托付类).尤其运行详细…
1.定义 将对象组合成树形结构以表示"部分-总体"的层次结构,使得用户对单个对象和组合对象的使用具有一致性. 2.使用场景 (1)表示对象的部分-总体层次结构时. (2)从一个总体中可以独立出部分模块或功能的场景. 3.UML类图 (1)Component:抽象根节点,为组合中的对象声明接口.在适当的情况下.实现全部类共同拥有接口的缺省行为. 声明一个接口用于訪问和管理Component的子节点.可在递归结构中定义一个接口,用于訪问一个父节点,并在合适的情况下实现它. (2)Compo…
第八章.状态模式 1.定义 状态模式中的行为是由状态来决定,不同的状态下有不同的行为.当一个对象的内在状态改变时同意改变其行为,这个对象看起来像是改变了其类. 2.使用场景 1.一个对象的行为取决于它的状态,而且它必须在执行时依据状态改变它的行为. 2.代码中包括大量与对象状态有关的条件语句,比如,一个操作中含有大量的多分支语句.且这些分支依赖于该对象的状态. 3.简单实现 实现效果:首先将电视的状态分为开机与关机状态,开机时能够通过遥控器实现频道切换和调节音量,可是关机时,这些操作都会失效.…
断断续续的,<Android源代码设计模式解析>也看了一遍.书中提到了非常多的设计模式.可是有部分在开发中见到的几率非常小,所以掌握不了也没有太大影响. 我认为这本书的最大价值有两点,一个是从设计模式的角度去理解Android源代码,结合着日常开发中的经常使用类,对设计模式的理解会更加的深刻:另外一个优点就是了解经常使用模式.再看其它人写的代码的时候,更easy理解代码思路. 以下是我的读书笔记和一些思考,设计模式仅仅整理我认为重要的部分. 建造者模式 建造者模式最明显的标志就是Build类,…
2.2.2 矩阵 matrix(vector,nrow,ncol,byrow,dimnames,char_vector_rownames,char_vector_colnames) 其中: byrow=TRUE/FALSE,表示按行填充还是按列填充,默认情况下是按列填充 2.2.4 数据框 1.attach,detach()和with() attach():将数据框加入搜索路径 detach():将数据框移除出搜索路径 with():赋值仅在括号内有效,如果想在括号外生效也可以,用<<- 2.…
knn算法: 1.优点:精度高.对异常值不敏感.无数据输入假定 2.缺点:计算复杂度高.空间复杂度高. 3.适用数据范围:数值型和标称型. 一般流程: 1.收集数据 2.准备数据 3.分析数据 4.训练算法:不适用 5.测试算法:计算正确率 6.使用算法:需要输入样本和结构化的输出结果,然后运行k-近邻算法判定输入数据分别属于哪个分类,最后应用对计算出的分类执行后续的处理. 2.1.1 导入数据 operator是排序时要用的 from numpy import * import operato…