草庐IT

Streaming模式

全部标签

java - 事件日志解析器的适当设计模式?

从事一个解析事件日志的项目,然后根据这些事件的属性更新模型。我一直很懒于“完成它”,而更关心前期优化、精益代码和适当的设计模式。主要是自学实验。我感兴趣的是更有经验的设计师认为哪些模式是相关的,或者什么类型的伪代码对象架构是最好的、最容易维护的等等。单个日志中可以有500,000个事件,大约有60种类型的事件,所有这些都共享大约7个基本属性,然后根据事件类型具有0到15个附加属性。事件类型是日志文件每一行中的第二个属性。所以我已经尝试了一个非常丑陋的命令式解析器,它逐行遍历日志,然后逐行处理事件。然后我尝试了一个使用“nextEvent”模式的词法规范,它在循环中被调用并被处理。然后我

java - 在 Java 中使用策略模式的电子邮件程序

更新:又增加了一个问题(问题#4)。大家好我正在为自己构建一个自定义电子邮件实用程序。现在,为了遵守单一职责原则,我想要以下类:MailerSender、MailProvider和EmailObject。MailSender更像是一个委托(delegate),请在下面查看:publicclassMailSender{privateIMailProvidermailProvider;publicvoidsetMailProvider(IMailProviderprovider){this.mailProvider=provider;}//optiontosetitupduringcons

java - 外观和 DAO 之间适合什么模式?

我正在为其JavaEEWeb应用程序设计我公司的部分架构。我非常清楚使用外观和一个或多个DAO的原因。我遇到的问题是:将有一些逻辑绝对属于集成层,因为这一切都是为了保持数据模型的一致性。除了逻辑超出了简单地维护引用完整性和其他将由JPA和Hibernate处理的“原始”持久性任务之外。我不将其归类为业务逻辑,因为它独立于任何业务功能。但是,我的理解是,DAO应该只实现访问对象并将对象持久保存到数据源所需的逻辑。我的结论是,我需要一个适合集成层的类似于“业务对象”的模式。我环顾四周,我发现的最接近的东西(但仍然不太符合我的想法)是SunTransferObjectAssemblerpat

c# - 领域驱动设计-父子关系模式-规范模式

我想知道以下哪项被认为是处理亲子关系时的最佳做法。1)下面的例子看似是一种常见的做法,但是在创建child的实例时,只要不添加到parent中,就会处于invalid状态。这不会导致验证等方面的问题吗?publicclassParent{privateICollectionchildren;publicReadOnlyCollectionChildren{get;}publicvoidAddChild(Childchild){child.Parent=this;children.Add(child);}}publicclassChild{internalParentParent{get

java - 真实世界 Java 应用程序中的单例模式和损坏的双重检查锁定

我正在阅读文章Double-checkedlockingandtheSingletonpattern,关于如何破坏双重检查锁定,以及StackOverflow上的一些相关问题。我已经多次使用这个模式/习语,没有任何问题。由于我一直在使用Java5,我的第一个想法是这已在Java5内存模型中得到纠正。但是文章说:ThisarticlereferstotheJavaMemoryModelbeforeitwasrevisedforJava5.0;statementsaboutmemoryorderingmaynolongerbecorrect.However,thedouble-checke

java - 无法找到 XML 模式命名空间的 Spring NamespaceHandler

我在eclipse中的tomcat中运行一些servlet代码。它一直工作正常,但今天我收到错误UnabletolocateSpringNamespaceHandlerforXMLschemanamespace。完整的错误如下所示:SEVERE:AllocateexceptionforservletRunServletorg.springframework.beans.factory.parsing.BeanDefinitionParsingException:Configurationproblem:UnabletolocateSpringNamespaceHandlerforXML

java - 模式中的规范等价

我指的是此处列出的测试工具http://docs.oracle.com/javase/tutorial/essential/regex/test_harness.html我对类所做的唯一更改是模式创建如下:Patternpattern=Pattern.compile(console.readLine("%nEnteryourregex(Pattern.CANON_EQset):"),Pattern.CANON_EQ);作为http://docs.oracle.com/javase/tutorial/essential/regex/pattern.html的教程建议我将模式或正则表达式作

java - 跨Java系统的配置设计模式

问题是老生常谈-什么是支持我们系统中的配置文件或系统配置的正确设计?我确定了以下要求:应该能够实时重新加载并立即获取更改而无需重新部署对于依赖相同的软件应用程序,例如SQL或memcached凭据,应该可以在一个隔离的地方引入更改并一次性部署,即使应用程序位于不同位置的不同机器上也是如此支持许多运行相同应用程序的进程/机器以及这个设计中我遇到的问题:每个主要类都应该将自己的“Config”类作为构造函数的输入参数吗?是否应该有一个工厂负责根据正确的配置进行实例化?或者每个类应该只从自己的配置中读取并自动重新加载?如果类B派生自类A,或围绕它组合,那么继承配置文件是否有意义?假设类A由M

java - 静态类的模板方法模式

我有一个执行某些工作的实用程序类。显然,它对扩展是封闭的,所有方法都是静态的。为了简单起见,该类如下所示:publicfinalclassUtil{privateUtil(){}publicstaticvoiddoWork(){//someworkintvariable=help();//someworkusesvariable}privatestaticinthelp(){//somehelperfunctionality}}该类具有执行大量计算的方法doWork。顺便说一下,方法调用辅助方法help来获取一些结果,其余代码使用help方法返回的结果。现在,在客户端代码中,我想重用方

java - 设计模式选择困境

Controller从用户那里接收到几个水果的列表。Controller需要从这些水果中提取果汁。一台榨汁机可以榨橙子和柚子汁;另一个榨汁机知道用苹果、香蕉和木瓜榨汁;等等。每个Juicer可以一次接受多个Fruits,它只会处理它能够处理的Fruits,而忽略其他未触及的Fruits。请针对此问题提出适当的设计建议。我一直在考虑以下选项:Controller调用MasterJuicer.juice(Listfruits).MasterJuicer依次调用CitrusJuicer.juice(fruits)和PulpyJuicer.juice(fruits).责任链似乎不对。榨汁机的调