首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【译】正确线程观察

基本逻辑,但是Observable链和操作符究竟运行在哪个线程,仍然会有许多困惑。....observeOn( )操作符可以改变Observable将在哪个调度器发送通知。 另外,你需要知道,默认情况下,链操作符将会在调用.subsribeOn( )那个线程执行任务。...调用 .subscribeOn( ) 尽管代码片段主线程中,但是整个代码块将运行在.subscribeOn( )定义线程: Observable.just(1,2,3) .subscribeOn...调用 .observeOn( ) 如果你代码片段主线程中,默认情况下Observable创建是.subscribeOn( )定义线程,但是,调用.observeOn( )之后,余下代码将会执行在...看起来有点像AsyncTask模式,尽可能把逻辑放在.doInBackground( )中,而不是.onPostExecute( )。 3.

49120

如何设计正确搜索模式

因此,搜索输入旁边设计一个实际按钮可以帮助用户确认他们下一个动作,从而减少用户所需认知负荷。 注意:避免将按钮放在输入框左侧,上方或下方。...提示: 文本输入获得焦点前,你可以隐藏输入按钮。 确保按钮大小适中,以便点击起来感觉自然。 2.输入特性 有时候,越是闪亮,强大或面积大东西也不一定能引起人们注意,搜索模式也一样。...在这种情况下,你可以使用悬停工具提示来确保提示在任何时候都是可见,这样用户就可以将他们短期内存用于其他任务。 在这个例子中,工具提示可以帮助用户使用正确查询格式以及找到他可以搜索内容。...请记住Miller在用户体验设计定律应用。 5.不要忘记定位 用户对AD Shaikh&K.Lenz2006年发现某些UI元素和模式位置有一定要求。...搜索是一个不断发展模式,我知道这篇文章没有涵盖所有现有的指导方针。了解这一点,我希望这篇文章能够帮助到你们当中一些初学者,甚至UX和UI设计老手。

1.5K60
您找到你想要的搜索结果了吗?
是的
没有找到

JavaScript-设计模式·设计模式

设计模式) 本篇是《JavaScript 设计模式与开发实践》第二部分读书笔记,总结前 7 种设计模式:单例模式、策略模式、代理模式、迭代器模式、发布-订阅模式、命令模式、组合模式。...当然,策略模式也有一些缺点: 使用策略模式会在程序中增加许多策略类或者策略对象,但实际这比把它们负责逻辑堆砌 Context 中要好。...实际 JavaScript 这种将函数作为一等对象语言里,策略模式已经融入到了语言本身当中,我们经常用高阶函数来封装不同行为,并且把它传递到另一个函数中。...发布—订阅模式优点非常明显,一为时间解耦,二为对象之间解耦。发布—订阅模式还可以用来帮助实现一些别的设计模式,比如中介者模式。...面向对象设计中,命令模式接收者被当成 command 对象属性保存起来,同时约定执行命令操作调用 command.execute 方法。

42930

django开发时遇到问题正确求助姿势

为此,我想向大家介绍一些当初我学习 django 时遇到问题如何有效求助一些经验,一些更容易得到解决方案求助渠道,以及一些可供查阅 django 资料等。...与之相比是 Google,我通常遇到问题会使用 Google 搜索,使用关键字 django + 问题简短英文描述,90% 以上问题都可以 Google 搜索结果里找到解决方案,几乎不用求助于他人...但如果遇到搜索引擎都无法解决问题,你就可以尝试 stackoverflow 提问,只要问题描述很好(见下文关于如何正确提问),基本很快就能得到热心来自世界各地开发者解答。...如何正确提问 正确提问就是要保证问题目的性、完整性、清晰性、明确性、和信息量。...我写好了代码,但是看不到你所说效果是怎么回事? 我该怎么服务器创建一个文件并写入内容?

93480

设计模式| 行为型模式 ()

其他同系列文章还有: 面向对象编程中六大原则 设计模式| 创建型模式 设计模式| 结构型模式 设计模式| 行为型模式 () 设计模式| 行为型模式 (下) 欢迎阅读,评论!!!...易于扩展,增加一个新策略对策略模式来说非常容易,基本可以不改变原有代码基础上进行扩展。...适用场景 做面向对象设计,对策略模式一定很熟悉,因为它实质就是面向对象中继承和多态,在看完策略模式通用代码后, 我想,即使之前从来没有听说过策略模式开发过程中也一定使用过它吧?...抽象类中模版方法正是通过实现类扩展方法来完成业务逻辑。只要实现类中扩展方法通过了单元测试, 模版方法正确前提下,整体功能一般不会出现大错误。 模版方法优点及适用场景 容易扩展。...责任链模式也有缺点,这与if…else…语句缺点是一样, 那就是找到正确处理类之前,所有的判定条件都要被执行一遍,当责任链比较长时,性能问题比较严重。

57320

如何正确 Android 使用协程 ?

即使稳定版协程已经发布了一年之余,但是好像并没有足够多用户,至少在我看来是这样。我学习协程各个阶段中,遇到问题都鲜有地方可以求助,抛到技术群基本就石沉大海了。...第一类是 Medium 热门文章翻译,其实我也翻译过: Android 使用协程(一):Getting The Background Android 使用协程(二):Getting started... Android 使用协程(三) :Real Work 说实话,这三篇文章的确加深了我对协程理解。... Android 中,一般是不建议直接使用 GlobalScope 。那么, Android 中应该如何正确使用协程呢?再细分一点,如何直接在 Activity 中使用呢?...协程 Android 使用 GlobalScope 一般应用场景下,我们都希望可以异步进行耗时任务,比如网络请求,数据处理等等。当我们离开当前页面的时候,也希望可以取消正在进行异步任务。

2.7K30

【地铁设计模式】--行为型模式:命令模式

什么是命令模式 命令模式(Command Pattern)是一种行为型设计模式,它将请求(命令)封装成一个对象,以便在不同上下文中使用,并支持将操作可撤销和重做。...命令模式优点在于: 可以很容易地设计一个命令队列; 可以方便地实现对请求撤销和恢复; 可以很容易地将命令组合起来,实现批处理等操作; 命令模式是一种类间解耦设计模式,通过命令对象和接收者解耦,实现了请求发送者和接收者之间松耦合...总结 命令模式是一种行为型设计模式,其目的是将一个请求封装为一个对象,从而使不同请求可以被多个对象处理。命令模式中包含三种主要角色:命令接口、具体命令和命令执行者。...命令模式缺点在于会增加系统复杂性,增加了命令对象数量,同时也会增加代码复杂性。此外,命令模式某些场景下也可能会造成性能问题,例如需要执行大量命令时。...总之,命令模式是一种非常实用设计模式,适用于需要将请求和处理对象解耦场景。实现命令模式时需要权衡复杂性和灵活性,并考虑系统性能和可维护性。

28420

【地铁设计模式】--行为型模式:策略模式

什么是策略模式 策略模式是一种行为型设计模式,它允许在运行时选择算法行为。这种模式通过定义一系列算法,并将每个算法封装到一个独立类中,使得它们可以相互替换。...通过这种方式,客户端可以根据需要选择要使用算法,而不必与特定算法相关实现细节耦合在一起。 策略模式适用于需要根据特定条件多种算法之间进行切换场景。...然而,使用策略模式可能会导致类数量增加,从而增加代码复杂性。此外,使用策略模式时,客户端必须了解不同策略之间区别,以便能够选择正确策略。因此,策略模式适用于复杂场景,而不适用于简单问题。...Context 类表示策略上下文,构造函数中接收一个 IStrategy 对象,表示当前采用策略,然后 ExecuteStrategy 方法中调用当前策略 Execute 方法。...测试代码中,我们可以通过 new 关键字创建不同具体策略,并通过 Context 对象来使用它们具体实现。 总结 策略模式是一种行为型设计模式,它允许在运行时选择算法行为。

18430

【地铁设计模式】--行为型模式:状态模式

什么是状态模式 状态模式是一种行为模式,它允许对象在其内部状态发生改变时改变其行为。状态模式中,将状态定义为独立对象,并将对象不同状态下行为委托给具有相应行为状态对象。...但是,状态模式也有一些缺点。首先,它可能导致类数量增加,从而使代码变得复杂。此外,状态转换比较复杂情况下,实现起来可能会比较困难。因此,使用状态模式时需要权衡利弊,根据具体情况进行选择。...定义客户端类:客户端类通过调用上下文类方法来切换状态。 状态模式核心思想是将对象行为封装成不同状态类,从而使其能够不同状态下具有不同行为。...这种方法可以提高代码可维护性和可扩展性,同时也可以让对象行为更加灵活和可控。实际应用中,状态模式被广泛应用于各种场景,例如订单状态处理、网络连接状态管理等。...Client 是一个使用状态对象示例程序。 总结 状态模式是一种行为型设计模式,它允许对象在内部状态发生改变时改变其行为。

19020

设计模式,Lets “Go”! ()

前言 最近读了《Head First 设计模式》,每天早上看一章,学习一个设计模式,做些笔记,然后晚上抽空用刚学习 Go 语言实现一下。半个月下来书读完了,留下了一些笔记,写文章总结一下。...=_= 本文为每个设计模式只分配了一小节,总结一下设计模式概念和特点以及适用场景,并介绍了自己用代码实现时列举例子,用现实生活中事物对比加深一下记忆 ( 代码实现中所有的例子都是自己原创,有牵强部分...每个模式篇幅不大,可以给新人入门,给了解过设计模式的人作为速查。...; 装饰者模式(Decorator) 介绍 装饰者模式:包装一个对象,在被装饰对象基础添加功能; 装饰者与被装饰对象拥有同一个超类,装饰者拥有被装饰对象所有外部接口,可被调用,外界无法感知调用是装饰者还是被装饰者...; 装饰者需要被装饰者作为参数传入,并在装饰者内部,在被装饰者实现基础添加或修改某些功能后,提供同被装饰者一样接口; 装饰者也可被另一个装饰者装饰,即嵌套装饰; 装饰者是一群包装类,由于装饰复杂性

77250

【地铁设计模式】--行为型模式:解释器模式

什么是解释器 解释器(Interpreter)是一种行为型设计模式,它用于解释一种特定编程语言或表达式。...它提供了一种解释一组语言语法方法,使得用户可以按照特定规则定义自己语言,并通过解释器将其转化成可执行代码。 解释器模式中,包含两个角色:终结符和非终结符。...然而,解释器模式缺点在于它可能会导致性能问题,因为它需要在解释器中进行大量运算和计算。此外,解释器模式设计较为复杂,需要开发者具备较强编程能力和领域知识。...同时,使用解释器时需要构建好环境类,把需要解释数据存储起来,提供给解释器使用。 Java实现 由于解释器模式相对比较复杂,需要先设计文法和规则,因此这里只提供一个示例代码,供参考。...总结 由于解释器模式使用较为特殊,而且适用范围也相对较窄,因此实际开发中使用较少。解释器模式通过定义一组语法规则来解释并执行特定语言,它包含终结符和非终结符两种类型节点。

26320

【地铁设计模式】--行为型模式:迭代器模式

什么是迭代器模式 迭代器模式是一种行为型设计模式,它提供了一种遍历聚合对象中各个元素方法,而不需要暴露该聚合对象内部表示。...这个模式分离了聚合对象遍历行为,使得遍历算法能够与聚合对象分离开来,从而可以不改变聚合对象情况下定义新遍历操作。...客户端代码中,通过调用聚合类 createIterator() 方法获取迭代器实例,并使用迭代器 hasNext() 和 next() 方法遍历聚合对象中元素。...Tip:Java 标准库已经提供了迭代器接口 Iterator,所以实现迭代器模式时可以直接使用标准库提供接口。如果需要自定义迭代器,只需要实现 Iterator 接口即可。...总结 迭代器模式是一种行为设计模式,它提供了一种简单方式来访问集合对象中元素,而不需要暴露集合内部表示细节。

33710

【地铁设计模式】--创建型模式:原型模式

什么是原型模式 原型模式是一种创建型设计模式,它通过复制现有对象来创建新对象。该模式基于一个原型对象,通过克隆来创建新对象,避免了创建过程中复杂配置。...原型模式适用于需要创建大量相似对象场景,可以提高代码复用性,减少对象创建开销。 如何实现原型模式 原型模式实现步骤如下: 创建原型接口,定义对象克隆方法。...使用原型模式关键是要确保被克隆对象具有正确克隆方法,并且使用合适方式进行克隆。此外,需要注意克隆对象引用类型数据是否需要深拷贝,以避免出现数据不一致问题。...克隆时,可以通过调用clone方法实现原型对象复制,返回是一个新对象,但是它与原始对象具有相同属性值。可以新对象修改属性而不会影响原始对象。...客户端代码中,创建原型对象并通过调用Clone方法克隆对象。 总结 原型模式是一种创建型模式,它通过复制现有的实例来创建新对象,避免了重复创建相同对象,提高了系统性能和可维护性。

14610

【地铁设计模式】--创建型模式:建造者模式

什么是建造者模式 建造者模式(Builder Pattern)是一种创建型设计模式,它允许逐步创建复杂对象,同时分离出对象构造过程和表示。...该模式将构造复杂对象过程分解为多个简单步骤,使得相同构造过程可以创建不同表示形式。建造者模式通常适用于构造复杂对象或需要生成多个不同表示对象。...与其他创建型模式相比,建造者模式更加关注对象构建过程,而不是创建过程。 如何实现建造者模式 建造者模式实现步骤如下: 创建产品类:定义需要被构建对象以及对象属性和方法。...使用时,我们首先创建一个ConcreteBuilder对象,然后将其传递给Director类Construct方法。...最后,我们可以通过GetProduct方法获得构建好Product对象。 总结 建造者模式是一种创建型设计模式,它通过将一个复杂对象构造过程分解为多个简单步骤,使得我们能够逐步构建该对象。

18620

【地铁设计模式】--结构型模式:代理模式

什么是代理模式 代理模式是一种结构型设计模式,通过代理对象控制对原始对象访问。代理对象充当客户端和实际对象之间中介,隐藏了实际对象复杂性,并提供了一些额外控制。...软件系统中,代理模式可以有多种应用。例如,代理模式可以用于实现远程代理、虚拟代理、保护代理和智能代理等。 远程代理是指代理对象用于不同地址空间中代表实际对象。...代理模式缺点包括: 增加系统复杂性:设计时,需要考虑代理对象和实际对象之间关系,这会增加系统复杂性。 降低系统性能:由于代理模式需要额外处理过程,可能会降低系统性能。...总结 代理模式是一种结构型设计模式,它允许创建一个代理对象作为其他对象接口。代理模式提供了一种中介机制,通过这种机制,代理对象可以控制访问其他对象方式,并提供额外功能。...这有助于实现系统中分层设计,保护目标对象免受不必要访问,提高系统安全性和可维护性。

10510

【地铁设计模式】--行为型模式:职责链模式

从这篇文章开始,我们将进入到设计模式最后一大类行为模式。 什么是行为模式 行为模式是面向对象编程中,一组用于处理对象间交互设计模式。行为模式主要关注是对象之间责任分配和行为控制。...备忘录模式(Memento Pattern) 备忘录模式用于不破坏封装性前提下,将一个对象状态保存下来,以便于之后可以将对象恢复到之前状态。...状态模式(State Pattern) 状态模式用于解决对象不同状态下行为差异问题,将对象不同状态下行为封装成独立类,从而使得状态改变不会影响到行为执行。...访问者模式(Visitor Pattern) 访问者模式定义了一种将算法与对象结构分离方式,可以不修改对象结构情况下定义新操作。...下面我们来看一下职责链模式 什么是职责链模式 职责链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许多个对象都有机会处理请求,从而避免请求发送者和接收者之间耦合关系

13810

【地铁设计模式】--结构型模式:组合模式

什么是组合模式 组合模式是一种结构型设计模式,将对象组合成树形结构,以表示部分整体层次结构,让用户对单个对象和组合对象使用具有一致性。...组合模式中,抽象构件定义了一个统一接口,用于管理所有对象,叶子节点和组合节点都实现了该接口。叶子节点表示单个对象,而组合节点表示包含其他节点对象。...组合模式适用于以下情况:需要表示部分整体层次结构情况,希望用户可以忽略对象与组合对象之间差异,统一地使用它们情况,以及希望不增加复杂性情况下增加新类型组件情况。...总结 组合模式是一种结构型设计模式,它允许客户端以统一方式处理单个对象以及对象组合。组合模式将对象组织成树状结构,使得客户端无需关心单个对象或组合对象具体类型,而是可以使用相同方式进行操作。...通过组合模式,可以将多个对象组合成更大、更复杂对象,使得代码结构更加灵活和可扩展。其缺点是增加了代码复杂性。组合模式实现树形结构和复杂对象场景中非常有用。

14430

【地铁设计模式】--行为型模式:模板方法模式

什么是模板方法模式 模板方法模式是一种行为设计模式,它定义了一个算法骨架,将一些步骤实现留给子类。这些步骤实现可以不改变算法骨架前提下进行自定义,从而实现不同行为。...该模式具有相似流程操作中非常有用,可以减少代码冗余并提高代码重用性。 模板方法模式优点是可以提高代码重用性和可维护性。由于相同算法骨架被用于不同实现,因此避免了代码重复情况。...然而,模板方法模式缺点是,由于它采用了集成方式,因此设计时必须考虑好类之间关系,以避免过度耦合。...总结 模板方法模式是一种行为设计模式,它通过定义一个算法框架,让子类实现其中一些步骤,以达到不同行为变化。...因此,实际应用中,需要权衡模板方法模式优缺点,谨慎使用。

21820

【地铁设计模式】--结构型模式:外观模式

什么是外观模式 外观模式是一种结构型设计模式,它为一组复杂子系统提供了一个简单接口,以便于客户端和子系统进行交互。这个接口隐藏了子系统复杂性,并且只暴露了子系统对客户端有用功能。...外观模式主要思想是通过一个外观类来封装子系统中复杂业务逻辑,使客户端无需了解子系统内部实现细节,从而降低了客户端复杂性和耦合度。...如何实现外观模式 外观模式实现步骤如下: 创建一个外观类,它应该包含客户端需要接口。 外观类内部应该持有一个或多个子系统对象引用,以便进行协调。...总结 外观模式是一种结构型设计模式,它为客户端提供了一个简单接口来访问复杂子系统,客户端只需要与外观对象交互,由外观对象去调用子系统各个部分,隐藏了系统复杂性。...通过外观模式,可以让客户端代码更加简洁,避免了与复杂系统中各个组件直接交互情况。外观模式缺点在于,由于外观对象承担了很多职责,因此增加了系统中类和对象数量,可能会导致系统复杂性增加。

16920

【地铁设计模式】--创建型模式:抽象工厂模式

这篇文章,我们来学习一下创建型模式另一个模式:抽象工厂模式 什么是抽象工厂模式 抽象工厂模式是一种创建型设计模式,它提供了一种方式来封装一组相关或相互依赖对象创建过程。...与工厂方法模式相比,抽象工厂模式抽象程度更高,因为它不仅能够封装具体产品创建过程,还能够封装具体产品族创建过程。...使用抽象工厂模式时,客户端只需要关注抽象工厂和抽象产品,而不需要关注具体实现细节。...总结 抽象工厂模式是一种创建型模式,它提供了一种封装一组相关或相互依赖对象接口,而不需要指定它们具体类。...需要注意抽象工厂接口和抽象产品接口设计,以及具体工厂类和具体产品类实现。

17510
领券