Tag: 设计模式

Java中构造函数中的多个可选参数 – 构造函数的指数

这是我遇到过几次,但还没有找到令人满意的答案。 这看起来很愚蠢,但谷歌搜索了一段时间后,我无法想出一些好的东西。 假设我有一个包含20个实例变量的类,每个变量都是可选的(将被初始化或不被初始化)。 现在我希望我的构造函数处理所有的情况,如果有一些实例变量它很好我可以创建具有不同签名的构造函数,但是这里我有20个,所以我需要2 ^ 20 = 1,048,576个构造函数处理所有案件! 那似乎……不是最优,你不同意吗? 因此,由于采用这种powershell方法,我基本上必须构造2 ^ n个构造函数,其中n是实例变量的数量,我想找到更好的方法来实现它。 我已经看到了这个问题的几个解决方案,但我相信它们都是关于数据的假设,但在我的情况下,这些变量中的每一个都可以初始化或不是随机的,我在初始化之前无法知道。 我正在寻找一些我可以应用的设计模式或想法,以使我的代码更加可维护(不用担心我没有创建1M +构造函数:) 谢谢。

创建支持实习的对象的良好模式?

我需要一个支持实习的类,比如Java的String类。 在创建Class的实例时,如果已存在具有相同参数的引用,则应返回预先存在的引用。 否则它应该返回一个新的引用。 这样: Foo a = new Foo(5); Foo b = new Foo(5); Foo c = new Foo(6); a == b a != c 1)维护预先存在的对象表是工厂的工作,还是表通常只是类本身内的静态变量? 2)预先存在的物体表是什么? 它是每次请求实例时搜索的一组对象,还是一个Map,其中键是对象,值是参数?

Selenium PageFactory设计:在页面对象模型之后我在哪里编写断言

我正在关注Page Object Model以在一个应用程序中自动化流程。 在其中一个模块中,我必须断言页面标题和更多消息。 截至目前,我将我的Assertion代码放在​​PageFactory本身中,如下所示: public class EditPost { WebDriver driver; public EditPost(WebDriver editPostDriver) { this.driver=editPostDriver; } @FindBy(how=How.XPATH,using=”//*[@id=’message’]/p”) WebElement post_published; public void assert_message() { String actual_message_title=post_published.getText(); Assert.assertEquals(actual_message_title, “Post published. View post”); System.out.println(“Message: Post published, Successfully Verified”); } } 我从实现TestNG的主文件调用assert方法如下: @Test (priority=5) public void assert_message() { //Created Page Object using Page Factory EditPost edit_post = PageFactory.initElements(driver, […]

java参数化通用静态工厂

在Java中是否可以创建一个静态工厂方法/类,它使用接口作为参数化类型并返回给定接口的实现类? 虽然我对generics的了解有限,但这就是我想要做的: // define a base interface: public interface Tool { // nothing here, just the interface. } // define a parser tool: public interface Parser extends Tool { public ParseObject parse(InputStream is); } // define a converter tool: public interface Converter extends Tool { public ConvertObject convert(InputStream is, OutputStream os); } // define a […]

针对事件的Android自定义侦听器

我正在尝试在更新整数值时触发事件,但它失败了。 这是我正在使用的代码: 声明自定义侦听器 public class fieldactivity extends AppCompatActivity implements View.OnClickListener { OnModeUpdate modeupdate; //Create custom listener for mode update int mode = 1; 模式更新代码 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fieldsignals); Button button = (Button) findViewById(R.id.mode_rotate_button); button.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case(R.id.rotate_button): mode += 1; modeupdate.onEvent(); //Fire Custom Lisentener […]

鸭示例策略模式 – 头首设计模式

我想问一下这本书上的鸭子例子让我感到困惑,我感到矛盾。 问题 结论 他说“ 当乔给鸭子超级类增加了新的行为时,他还添加了对于sume Duck子类不合适的行为 ” 但在结论中他添加了performFly()和performQuack(); 有什么不同,因为我认为同样he was also adding behavior that was not appropiate for sume Duck subclasses ? **图片摘自头脑第一设计图案**这个问题没有说明这本书不好,这本书在我看来真的很好。 这只是我在问一些我从书中得不到的东西。

为什么MouseAdapter是适配器?

名称(和javadocs)暗示MouseAdapter是一个适配器(设计模式)。 但我并没有这样看待它 – 至少乍一看它并没有适应任何东西 唯一适应的是您可以将MouseAdapter的实例MouseAdapter给任何需要其中一个接口的方法。 因此,您可以使用只需要MouseMotionListener的MouseListener实例。 但是没有“翻译”发生。 并且它不符合GoF的UML – 在“类适配器”版本中,期望对一个方法的调用从适配器调用方法。 那么,这是一个适配器(设计模式),还是只是一个引起混淆的随机名称?

DTO模式是否已弃用?

在一个完整的Java EE应用程序中,群集是DTO模式仍然是一个有效的选项? 有问题的应用程序使用EJB Hibernate和Struts with Spring等。在这种情况下传输域对象有什么问题吗? 编辑:只是为了澄清我的问题,现代资源和Java EE的改进有没有理由不使用域对象? 如果没有,那么DTO模式是否会逐渐消失,不应该在新的应用程序中使用?

单例和静态实用程序类

哪些因素影响适当的设计模式? 澄清: 我问这个问题的原因是因为我正在设计一个需要多个静态工厂类和单例管理器类的应用程序。 有时候,我对我应该雇用哪种设计感到困惑,我想问这个社区为什么以及什么时候可以帮助我澄清一些事情。

对于一个大的validation任务是责任链模式的一个好赌注?

我需要构建一个过程,它将根据~200个validation规则validation记录。 记录可以是~10种类型中的一种。 从validation规则到记录类型存在一些细分,但存在大量重叠,这使我无法对validation规则进行干净整理。 在我的设计过程中,我正在考虑所有validation规则的责任链模式。 这是一个好主意还是有更好的设计模式?