1.1. 会话的形成机制 会话的形成机制 web:新来源或者间隔超过半个小时 移动端:回到后台超过五分钟之后或者kill掉应用 会话跟用户的关系 中间新用户注册或者退出换新账号跟会话没有关系。从这个意义上来看,会话跟用户的操作没有关系,仅仅跟应用或者网站访问有关系。 涉及到具体的操作环节,因为sdk会把userid存在本地,所以会话也可以取到userid(这个特性只有sdk2.1有)。老的sdk需
1. 适配器(Adapter) Intent 把一个类接口转换成另一个用户需要的接口。 Class Diagram Implementation 鸭子(Duck)和火鸡(Turkey)拥有不同的叫声,Duck 的叫声调用 quack() 方法,而 Turkey 调用 gobble() 方法。 要求将 Turkey 的 gobble() 方法适配成 Duck 的 quack() 方法,从而让火鸡冒充
迭代器(Iterator) Intent 提供一种顺序访问聚合对象元素的方法,并且不暴露聚合对象的内部表示。 Class Diagram Aggregate 是聚合类,其中 createIterator() 方法可以产生一个 Iterator; Iterator 主要定义了 hasNext() 和 next() 方法; Client 组合了 Aggregate,为了迭代遍历 Aggregate,也
责任链(Chain Of Responsibility) Intent 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链发送该请求,直到有一个对象处理它为止。 Class Diagram Handler:定义处理请求的接口,并且实现后继链(successor) Implementation // java public abstract c
访问者(Visitor) Intent 为一个对象结构(比如组合结构)增加新能力。 Class Diagram Visitor:访问者,为每一个 ConcreteElement 声明一个 visit 操作 ConcreteVisitor:具体访问者,存储遍历过程中的累计结果 ObjectStructure:对象结构,可以是组合结构,或者是一个集合。 Implementation // java p
解释器(Interpreter) Intent 为语言创建解释器,通常由语言的语法和语法分析来定义。 Class Diagram TerminalExpression:终结符表达式,每个终结符都需要一个 TerminalExpression。 Context:上下文,包含解释器之外的一些全局信息。 Implementation 以下是一个规则检验器实现,具有 and 和 or 规则,通过规则可以构
7. 观察者(Observer) Intent 定义对象之间的一对多依赖,当一个对象状态改变时,它的所有依赖都会收到通知并且自动更新状态。 主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。 Class Diagram 主题(Subject)具有注册和移除观察者、并通知所有观察者的功能,主题是通过维护一张观察者列表来实现这些操作的。 观察者(Observer)的注
空对象(Null) Intent 使用什么都不做 的空对象来代替 NULL。 一个方法返回 NULL,意味着方法的调用端需要去检查返回值是否是 NULL,这么做会导致非常多的冗余的检查代码。并且如果某一个调用端忘记了做这个检查返回值,而直接使用返回的对象,那么就有可能抛出空指针异常。 Class Diagram Implementation // java public abstract clas
设计模式是解决问题的方案,学习现有的设计模式可以做到经验复用。拥有设计模式词汇,在沟通时就能用更少的词汇来讨论,并且不需要了解底层细节。 二、创建型 单例.md 简单工厂.md 工厂方法.md 抽象工厂.md 生成器.md 原型模式.md 三、行为型 责任链.md 命令.md 解释器.md 迭代器.md 中介者.md 备忘录.md 观察者.md 状态.md 策略.md 模板方法.md 访问者.md
5. 生成器(Builder) Intent 封装一个对象的构造过程,并允许按步骤构造。 Class Diagram Implementation 以下是一个简易的 StringBuilder 实现,参考了 JDK 1.8 源码。 // java public class AbstractStringBuilder { protected char[] value; protec
备忘录(Memento) Intent 在不违反封装的情况下获得对象的内部状态,从而在需要时可以将对象恢复到最初状态。 Class Diagram Originator:原始对象 Caretaker:负责保存好备忘录 Memento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator 的
本文向大家介绍网络层设计问题,包括了网络层设计问题的使用技巧和注意事项,需要的朋友参考一下 OSI(开放系统互连)模型的网络层或第3层涉及跨多个跃点或链路从源到目标的数据包传递。它是与端到端传输有关的最低层。与设计该层有关的设计人员需要解决某些问题。这些问题包括提供给上层的服务以及该层的内部设计。 设计问题可以从四个方面来阐述- 存储-和-转发数据包交换 传输层服务 提供面向连接的服务 提供无连接
问题内容: 在AngularJS负责人Igor Minar 的这篇文章中: MVC vs MVVM vs MVP 。许多开发人员可能花费数小时来辩论和争论,这是一个有争议的话题。 几年来,AngularJS更加接近于MVC(或其客户端变体之一),但是随着时间的流逝,由于许多重构和api的改进,现在它更加接近 MVVM – $ scope 对象可以被认为是 ViewModel 。由我们称为 Cont
我正在开发一种Rest服务,我正在努力遵守罗伊·菲尔丁医生的惯例和指导原则。 我将我的服务想象成公开一组资源的endpoint。资源由URI标识,api客户端可以使用HTTP语义学(即不同的HTTP动词映射到URI上的相应操作)来操作资源。 指导方针指出,这些URI应该以分层的方式定义,以反映对象层次结构。这在资源创建中非常有用,因为在后端,我们需要数据来执行创建操作。然而,在进一步的操作中,UR
我使用的是API22上的Android设计库。我想: 有一个工具栏和一个抽屉布局,里面有一个RecycerView 使Drawer布局位于工具栏下方;例如,当工具栏可见时,抽屉的主要内容应该在它下面,(左)抽屉也应该在它下面,这样当它展开时,工具栏仍然可见 当回收器视图向下滚动时,使工具栏从屏幕上滚动