Tag: 设计模式

all-static-methods和应用单例模式有什么区别?

我正在创建一个数据库来存储有关我网站用户的信息(我正在使用stuts2,因此使用Java EE技术)。 对于数据库,我将创建一个DBManager。 我应该在这里应用单例模式还是将所有方法设为静态? 我将使用此DBManager来添加,删除和更新用户配置文件等基本内容。 除此之外,我将用于所有其他查询目的,例如,查明用户名是否已经存在,并让所有用户出于管理目的和类似的东西。 我的问题 单身模式有什么好处? 哪个最适合这里? 所有静态方法还是单例模式? 请比较它们。 问候 shahensha PS数据库比这大。 这里我只讨论我将用于存储用户信息的表。

复合模式中的多叶方法问题

在工作中,我们正在开发一个PHP应用程序,稍后可以将其重新编程为Java。 有了Java的一些基本知识,我们正在尝试设计一些易于重写的内容,而不会有任何麻烦。 当我们尝试在叶子中实现具有大量方法的复合模式时,出现了有趣的问题。 我们想要实现什么(不使用接口,它只是一个简单的例子): class Composite { … } class LeafOne { public function Foo( ); public function Moo( ); } class LeafTwo { public function Bar( ); public function Baz( ); } $c = new Composite( Array( new LeafOne( ), new LeafTwo( ) ) ); // will call method Foo in all classes in […]

如何用相同的方法“包装”两个类?

我必须使用相同的方法处理两个类,但它们不实现相同的接口,也不扩展相同的超类。 我不能/不允许更改这个类,我不构造这个类的实例我只得到这个对象。 避免大量代码重复的最佳方法是什么? 其中一个类: package faa; public class SomethingA { private String valueOne = null; private String valueTwo = null; public String getValueOne() { return valueOne; } public void setValueOne(String valueOne) { this.valueOne = valueOne; } public String getValueTwo() { return valueTwo; } public void setValueTwo(String valueTwo) { this.valueTwo = valueTwo; } } 和另外一个… package […]

在这种情况下使用适合的嵌套枚举?

我需要支持许多ChartTypes 。 这些图表类型中的每一种都可以支持许多ChartSubTypes 。 例如, AreaChart类型可以有PercentArea , StackedArea等。我正在考虑为SubTypes和SubTypes使用Enum,然后在某处维护一个类似于以下内容的地图: Map<ChartType,List mapTypes; 我可以在这里以某种方式使用嵌套的枚举模式吗? 如果是,那怎么样?

如何在Java中打包工厂

我想知道如何在我的应用程序中打包我的工厂。 工厂应该与使用它的类在同一个包中,与它创建的对象在同一个包中还是在它自己的包中? 感谢您的时间和反馈

避免重复代码的好策略

假设我有以下情况: public class A { public String createString(final String value){ if (value == null){ throw new NullPointerException(“value must NOT be null.”); } final StringBuffer sb = new StringBuffer(); sb.append(“A”); sb.append(“B”); sb.append(“C”); if (value.length() > 3){ sb.append(“D”); sb.append(“E”); } sb.append(“Z”); return sb.toString(); } } 另一个类应该做类似的任务: public class B { public String createString(final String value){ if (value […]

使用Class.forName()初始化一个类,该类具有一个带参数的构造函数

我正在实例化这样一个类。 myObj = (myObj) Class.forName(“fully qualified class name here”).newInstance(); 我怀疑的是,如果我们有一个构造函数,它接受参数如何像上面那样实例化它。 谢谢, 纳伦德拉

设计模式可以替换if语句

我们的应用越来越复杂,它主要有3个流程,并且必须基于3种类型之一进行处理。 其中许多function相互重叠。 因此,目前的代码完全是if-else语句,它们都搞砸了并且没有组织。 如何制作一个模式,使3个流清晰地相互分离,但利用可重用性的力量。 请提供一些想法,这是一个MVC应用程序,我们需要使用jaxb技术生成和使用Web服务。 可能是您可以将应用程序视为单个对象作为输入,需要根据运行时值实现不同的策略。

我如何有效地使用事件总线?

现在我正在探索一个Android学习项目的一些选项。 我正在尝试与我的rails api(也是一个学习项目)进行交流。 在做了一些研究之后,我想我已经确定了一个使用改造和otto的方案。 我最终得到的是这个。 当我想调用我的rails服务器(在这种情况下进行注册)时,我会在活动中执行此操作。 mBus.post(new SignupRequestEvent(new UserRequestParams(mName,mEmail,mPassword,mPasswordConfirmation ))); 然后在同一个活动中我有这个。 @Subscribe public void onSignupCompleted(SignupCompletedEvent event) { System.out.println(String.format(“in onSignupCompleted, got token = %s “, event.getParams().getToken())); } 这里的问题是,就目前而言,每个api请求类型和相应的响应类型都是一个唯一的事件类型,并且需要它自己的类,这看起来像很多样板代码。 例如,要处理登录和退出,我需要这两个类: public class SignupRequestEvent { protected UserRequestParams mSignupParams; public SignupRequestEvent(UserRequestParams signupParams) { mSignupParams = signupParams; } public UserRequestParams getParams() { return mSignupParams; } } public class SignupCompletedEvent { […]

如何组织提供REST Web服务的JEE6企业应用程序?

从一个月前开始,我正在努力学习宁静的网络服务。 现在我练习了语法并理解了概念,我决定创建一个包含EJB,JPA和REST的非常简单的企业应用程序。 我正在努力尝试了解组织这种系统的最佳方法。 如果有经验的人可以给我一些关于什么是最佳实践的技巧,我会非常感激,以及如何解决我当前的问题。 我来告诉你这个形象吧。 抱歉,我无法获得更好的分辨率(使用Ctrl +鼠标向上滚动缩放): 如您所见,这是一个非常简单的企业应用程序,它有2个模块。 此应用程序不使用CDI(我希望在没有CDI帮助的情况下实现我的目标) 当某个客户端(任何可互操作的客户端)发送带有某些参数的@GET时,REST服务应将这些参数传递给EJB模块,该模块将在数据库中搜索并发回适当的数据。 最后,服务将在JAXB的帮助下自动编组,并将.XML发送回客户端。 我的问题如下: 我得到一个ClassCastException,因为它在EJB模块中的实体与WebModule中的JAXB类不兼容(即使它们的变量是相同的) 我不知道应该如何组织事情,所以前端可以整理和解组这些实体。 应该是实体类在前端与JAXB映射相结合吗? 如果那时,就不会真正需要EJB模块。 但问题是,我想要EJB模块,因为我经常在那里进行CRUD操作。 将EJB暴露为REST Web服务(制作混合)怎么样? 你认为这是个好主意吗? 它怎么能帮到我? 再次,如果我在Web模块中创建JAXRS + EJB的混合,我必须在前端创建我的JPA实体,这是我以前从未做过的事情。 你认为这是一个好习惯吗? 你有什么建议? 使用REST Web服务的企业应用程序的组织方式通常是什么?