flex布局水平垂直 垂直_垂直和水平装饰

flex布局水平垂直 垂直

装饰器模式是在不更改其接口的情况下向对象添加功能的最佳方法之一。 我经常使用可组合装饰器,并且总是会问自己在功能列表必须可配置时如何正确设计它们。 我不确定我的答案是否正确,但是这里有一些值得深思的地方。

The Apartment(1960),比利·怀尔德(Billy Wilder)

The Apartment(1960),比利·怀尔德(Billy Wilder)

假设我有一个数字列表:

interface Numbers {Iterable<Integer> iterate();
}

现在,我想创建一个仅包含奇数,唯一,正数和排序数的列表。 第一种方法是垂直的 (我刚刚将其命名):

Numbers numbers = new Sorted(new Unique(new Odds(new Positive(new ArrayNumbers(new Integer[] {-1, 78, 4, -34, 98, 4,}))))
);

第二种方法是水平的 (同样,我做了一个名字):

Numbers numbers = new Modified(new ArrayNumbers(new Integer[] {-1, 78, 4, -34, 98, 4,}),new Diff[] {new Positive(),new Odds(),new Unique(),new Sorted(),}
);

看到不同? 第一种方法“垂直”修饰ArrayNumbers ,通过可组合修饰符PositiveOddsUniqueSorted添加功能。

第二种方法引入了新的接口Diff ,该接口通过PositiveOddsUniqueSorted实例实现了迭代数字的核心功能:

interface Diff {Iterable<Integer> apply(Iterable<Integer> origin);
}

对于numbers用户,这两种方法是相同的。 区别仅在于设计。 哪个更好?何时? 似乎垂直装饰更易于实现,并且更适合于只暴露一些方法的较小对象。

根据我的经验,我总是倾向于从垂直装饰开始,因为它易于实现,但随着装饰器数量的增加最终会迁移到水平装饰。

翻译自: https://www.javacodegeeks.com/2015/10/vertical-and-horizontal-decorating.html

flex布局水平垂直 垂直

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/337057.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文读懂 | Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删栈是什么&#xff1f;栈有什么作用&#xff1f;首先&#xff0c;栈 (stack) 是一种串列形式的数据结构。这种数据结构的特点是后入先出 (LIFO, L…

【C语言】彻底搞懂内存屏障与volatile

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删最有价值的写在最前面内存屏障与 volatile 是高并发编程中比较常用的两个技术&#xff0c;无锁队列的时候就会用到这两项技术。然而这两项技术涉…

熟悉又陌生的arm 编译器详解(armcc/armclang)

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删arm编译器学习首先来了解一下编译器&#xff0c;其通常分为三个部分&#xff1a;前端优化器后端。前端&#xff1a;词法、语法和语义分析&#x…

图文详解STM32单片机远程升级

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删1、需要两份程序BootLoader和App程序&#xff0c;两份程序均可以通过jlink下载&#xff0c;只需要将下载地址修改一下即可&#xff1a;2、在Boot…

建立索引lucene_用Lucene建立搜索索引

建立索引lucene本文是我们名为“ Apache Lucene基础知识 ”的学院课程的一部分。 在本课程中&#xff0c;您将了解Lucene。 您将了解为什么这样的库很重要&#xff0c;然后了解Lucene中搜索的工作方式。 此外&#xff0c;您将学习如何将Lucene Search集成到您自己的应用程序中…

spring javafx_Oracle Spring Clean JavaFX应该吗?

spring javafx我们确实在Codename One上依赖JavaFX&#xff0c;我们的模拟器需要它。 我们的桌面版本使用它&#xff0c;而我们的设计器工具基于Swing。 我们希望它成功&#xff0c;这对我们的业务至关重要&#xff01; 即使您是Java EE开发人员并且不关心桌面编程&#xff0c;…

哪些著名软件是用C、C++编写的?

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删经常跟大家谈论C/C是多么的厉害&#xff0c;但总是耳听为虚&#xff0c;还需眼见为实&#xff0c;那如何做到眼见为实呢&#xff1f;当然还是要从…

java ee 下版本_将旧版本从Java EE 5减少到7

java ee 下版本Java EE 5于2005年首次引入&#xff0c;而Java EE 7于2013年问世。这两个版本之间存在7年的差距&#xff0c;从技术角度来说&#xff0c;这就像一个世纪。 许多组织仍然对使用Java EE 5感到困惑&#xff0c;并且有很多正当的理由选择不升级。 不过&#xff0c;如…

哪款 Linux 才是更好的 CentOS 替代品?

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删AlmaLinux 是基于 RHEL 的企业级 Linux 发行版。以下是选择 AlmaLinux 作为 CentOS 替代方案的一些原因。CentOS 将于 2024 年 6 月到期。截至 2…

绩效从C到S,分享渣渣程序员逆袭秘诀!

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删绩效面谈结束&#xff0c;从会议室出来&#xff0c;有一种不真实的感觉——这个季度我竟然拿了S&#xff1f;&#xff01;要知道&#xff0c;上个…

海贼王为什么画风突变_什么是突变测试?

海贼王为什么画风突变最近&#xff0c;我再三提到突变测试一词。 因为可以说这种方法能够以超出代码覆盖范围的方式检测测试安全网的空白&#xff0c;所以我花了一些时间来追赶这个话题并尝试一下。 这篇文章总结了我的发现&#xff0c;作为对该主题的快速介绍。 什么是变异测…

C语言 #define 与 typedef 的区别与用法

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删在C语言编程中&#xff0c;typedef 和 #define是最常用语句&#xff0c;可能很多工作过几年的工程师都没有去深究过它们的一些用法和区别。typed…

硬核!400 行代码实现一个虚拟机

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删我们都知道理工科类的大学专业&#xff0c;一般都会在大一选择教授 C 语言作为编程入门语言&#xff0c;我最初接触编程也是入的 C 语言的坑。课…

Spring集成基础知识

本文是我们名为“ EAI的Spring集成 ”的学院课程的一部分。 在本课程中&#xff0c;向您介绍了企业应用程序集成模式以及Spring Integration如何解决它们。 接下来&#xff0c;您将深入研究Spring Integration的基础知识&#xff0c;例如通道&#xff0c;转换器和适配器。 在这…

C++最佳实践 | 工具

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删前言C最佳实践: 支持Fork的编码标准文档本文档旨在收集对C最佳实践所进行的协作性讨论&#xff0c;是《Effective C》(Meyers) 和《C Coding Sta…

C语言函数返回 1 和返回 0 哪个好?

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删基本上&#xff0c;没有人会将大段的C语言代码全部塞入 main() 函数。更好的做法是按照复用率高、耦合性低的原则&#xff0c;尽可能的将代码拆分…

抽象工厂和工厂方法示例_抽象工厂设计模式示例

抽象工厂和工厂方法示例本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查…

史上最污技术解读,我竟然秒懂了

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删假设你是个妹子&#xff0c;你有一位男朋友&#xff0c;于此同时你和另外一位男生暧昧不清&#xff0c;比朋友好&#xff0c;又不是恋人。你随时…

tdd java_Java TDD简介–第1部分

tdd java欢迎来到测试驱动开发 &#xff08;TDD&#xff09;系列的介绍。 我们将在TDD上下文中讨论Java和JUnit &#xff0c;但这只是工具。 本文的主要目的是使您全面了解TDD&#xff0c;而无论使用哪种编程语言和测试框架。 如果您在项目中不使用TDD&#xff0c;那么您要么是…

C++最佳实践 | 代码风格

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删C最佳实践:1. 工具2. 代码风格&#xff08;本文&#xff09;3. 安全性4. 可维护性5. 可移植性及多线程6. 性能7. 正确性和脚本代码风格代码风格最…