标签: builder

symfony2表单带有参数的querybuilder

我想将我的实体放在查询生成器的函数中:

->add( 'weeks', 'entity', array(
    'class' => 'MV\CaravanBundle\Entity\CaravanRow',
    'property' => 'line',
    'query_builder' => function(EntityRepository $er ) use ( $caravan ) {
        return $er->createQueryBuilder('w')
                  ->orderBy('w.dateFrom', 'ASC')
                  ->where('w.caravan = ?', $caravan )
                  ->andWhere('w.visible = 1')
                  ->andWhere('w.booked = 0');
}
Run Code Online (Sandbox Code Playgroud)

但得到消息:

在此上下文中不允许表达"实体\名称"类型

那么提供querybuilder信息的(最佳)方法是什么呢?

forms builder query-builder symfony

23
推荐指数
2
解决办法
4万
查看次数

多态对象层次结构的构建器模式:Java可能吗?

我有一个接口层次结构,有Child实现Parent.我想使用不可变对象,所以我想设计Builder一些方便地构造这些对象的类.但是,我有很多Child接口,我不想Parent在每种类型的子构建器中重复构建s 的代码.

因此,假设以下定义:

public interface Parent {
    public Long getParentProperty();
}

public interface Child1 extends Parent {
    public Integer getChild1Property(); 
}

public interface Child2 extends Parent {
    public String getChild2PropertyA();
    public Object getChild2PropertyB();
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能有效地实施构建器Child1BuilderChild2Builder?他们应该支持以下操作:

Child1 child1 = Child1Builder.newChild1().withChild1Property(5).withParentProperty(10L);
Run Code Online (Sandbox Code Playgroud)

Child2 child2 = Child2Builder.newChild2().withChild2PropertyA("Hello").withParentProperty(10L).withChild2PropertyB(new Object());
Run Code Online (Sandbox Code Playgroud)

我不想withParentProperty为每个子构建器实现特殊情况.

编辑添加第二个属性,Child2以澄清这不能用简单的泛型.我不是在寻找一种方式来组合Child1Child2-我正在寻找一种方式来实现Builder,不重复建设的父类为每个子类的工作体系.

谢谢你的帮助!

java design-patterns builder

22
推荐指数
2
解决办法
1万
查看次数

如何填充在JavaFx Scene Builder中设计的fxml文件中定义的TableView

我想知道如何使用数据填充TableView ...我看到的所有示例都创建了一个包含列和所有内容的TableView,并将其添加到场景中.全部都是在java代码中完成的.

我想知道的:如果我在JavaFx场景构建器中设计我的"表单".在那里定义所有表和列.如何访问它以从java填充它?或者,如果有人可以指出我正确的教程请.

我在JavaFx Scene Builder中定义了我的表单 - 只有一个包含3列的TableView

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="288.0" prefWidth="293.0" xmlns:fx="http://javafx.com/fxml">
<children>
    <TableView fx:id="tableView" layoutX="35.0" layoutY="28.0" prefHeight="200.0" prefWidth="227.0">
    <columns>
        <TableColumn prefWidth="75.0" text="UserId" fx:id="UserId" />
        <TableColumn prefWidth="75.0" text="UserName" fx:id="UserName" />
        <TableColumn prefWidth="75.0" text="Active" fx:id="Active" />
    </columns>
    </TableView>
</children>
</AnchorPane>
Run Code Online (Sandbox Code Playgroud)

我的数据在我的Java代码中的ResultSet中.

ResultSet rs = c.createStatement().executeQuery(SQL);
Run Code Online (Sandbox Code Playgroud)

我需要填充TableView.

谢谢

builder populate tableview scene javafx-2

21
推荐指数
1
解决办法
5万
查看次数

在Kotlin中,如何将扩展方法添加到另一个类,但只在某个上下文中可见?

在Kotlin中,我想将扩展方法添加到类中,例如添加到类中Entity.但我只想Entity在交易中看到这些扩展,否则隐藏.例如,如果我定义这些类和扩展:

interface Entity {}

fun Entity.save() {}
fun Entity.delete() {}

class Transaction {
    fun start() {}
    fun commit() {}
    fun rollback() {}
}
Run Code Online (Sandbox Code Playgroud)

我现在可以叫意外save(),并delete()在任何时候,但我只希望他们可以在后start()一交易后不再commit()rollback()?目前我可以这样做,这是错误的:

someEntity.save()       // DO NOT WANT TO ALLOW HERE
val tx = Transaction()
tx.start()
someEntity.save()       // YES, ALLOW
tx.commit()
someEntity.delete()     // DO NOT WANT TO ALLOW HERE
Run Code Online (Sandbox Code Playgroud)

如何使它们在正确的上下文中显示和消失?

注意: 这个问题是由作者故意编写和回答的(答案问题),因此对于常见问题的Kotlin主题的惯用答案存在于SO中.还要澄清为Kotlin的alphas写的一些非常古老的答案,这些答案对于当前的Kotlin来说是不准确的.其他答案也欢迎,有很多样式如何回答这个问题!

dsl builder kotlin

21
推荐指数
2
解决办法
3024
查看次数

如何简洁地在Java中构建XML文档?

我需要从Java对象层次结构构建XML文档.Java类和XML格式都是固定的.所以我不能使用像XStream这样的XML序列化器:它将XML格式基于Java类.同样,像JAXB这样的Java XML绑定技术也不起作用,因为它从XML模式创建Java类[编辑:但见下文].我需要一个手动方法.

低技术的StringBuilder路由导致脆弱和错误的代码(至少对我而言!).

JAXPJDOM这样的API 可以提供更强大的代码,但这些代码非常冗长.

Groovy有一个优雅的MarkupBuilder:

def writer = new StringWriter()
def xml = new MarkupBuilder(writer)
xml.records() {
  car(name:'HSV Maloo', make:'Holden', year:2006) {
    country('Australia')
    record(type:'speed', 'Production Pickup Truck with speed of 271kph')
  }
  car(name:'P50', make:'Peel', year:1962) {
    country('Isle of Man')
    record(type:'size', 'Smallest Street-Legal Car at 99cm wide and 59 kg')
  }
}
Run Code Online (Sandbox Code Playgroud)

其他语言(例如Ruby)甚至更好,但我希望保留纯Java.似乎有一些新的Java构建器用于Java,例如practicalxml和James Murty的xmlbuilder.

在Java中构建XML文档有哪些更优雅的方法?

摘要:

Jon Doe建议使用dom4jjdom.

无论如何,CurtainDog推荐使用JAXB,并且jherico告诉我这是一个相关的建议:然后你可以使用Dozer在我当前的JavaBeans和JAXB …

java xml builder

20
推荐指数
1
解决办法
1万
查看次数

在"架构"构建器中更改列长度?

我有两个字段,我需要增加字符限制.我仔细阅读了文档,令我惊讶的是我找不到它的选择.有可能吗?如果没有,我该如何解决这个问题呢?

我可以删除列并使用正确的属性重新创建它,但我不想丢失数据库中的任何数据.

database schema builder alter laravel

19
推荐指数
3
解决办法
1万
查看次数

如何在Java 8中实现构建器模式?

我常常发现使用pre-java-8设置实现构建器模式很繁琐.总是有很多几乎重复的代码.构建器本身可以被视为样板.

事实上,有代码重复检测器,几乎可以考虑使用pre-java-8工具制作的构建器的每个方法作为每个其他方法的副本.

所以考虑下面的类和它的pre-java-8构建器:

public class Person {

    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

public class PersonBuilder {

    private static class PersonState {
        public String name;
        public int age;
    }

    private PersonState  state = new PersonState();

    public PersonBuilder withName(String name) {
        state.name = name;
        return this; …
Run Code Online (Sandbox Code Playgroud)

java builder java-8

19
推荐指数
4
解决办法
3万
查看次数

这个Monster Builder是一个很好的构建器/工厂模式,用于抽象混合了setter的长构造函数吗?

这是一个关于将步骤构建器模式增强向导构建器模式组合到创建 DSL中的人机界面问题.它使用流畅的界面,虽然它使用方法链接,而不是级联.也就是说,这些方法返回不同的类型.

我面对的是一个怪物类,它有两个构造函数,它们混合了整数,字符串和一系列字符串.每个构造函数都是10个参数.它还有大约40个可选的制定者; 如果一起使用,其中一些相互冲突.它的构造代码看起来像这样:

Person person = Person("Homer","Jay", "Simpson","Homie", null, "black", "brown", 
  new Date(1), 3, "Homer Thompson", "Pie Man", "Max Power", "El Homo", 
  "Thad Supersperm", "Bald Mommy", "Rock Strongo", "Lance Uppercut", "Mr. Plow");

person.setClothing("Pants!!");     
person.setFavoriteBeer("Duff");
person.setJobTitle("Safety Inspector");
Run Code Online (Sandbox Code Playgroud)

这最终失败了,因为事实证明设置了两个最喜欢的啤酒职位是不相容的.叹.

重新设计怪物类不是一种选择.它被广泛使用.有用.我只是不想再看它直接构建了.我想写一些干净的东西来喂它.在不让开发人员记住它们的情况下遵循其规则的东西.

与我一直在研究的美妙的建造者模式相反,这个东西没有风味或类别.它在需要时始终需要一些字段和其他字段,有些仅取决于之前设置的字段.施工人员不是伸缩式的.它们提供了两种使类进入相同状态的替代方法.它们漫长而丑陋.他们想要给他们的东西各不相同.

一个流畅的建设者肯定会让长建筑师更容易看到.然而,大量可选的设置器使所需的设置器变得混乱.并且要求级联的流利构建器不满足:编译时执行.

构造函数强制开发人员显式添加必需的字段,即使将其归零也是如此.使用级联流畅的构建器时,这会丢失.与安装者失去的方式相同.我想要一种方法来阻止开发人员构建,直到添加了每个必填字段.

与许多建筑师模式不同,我所追求的不是不变性.我发现它,我正在离开课堂.我想通过查看构建它的代码来了解构造的对象是否处于良好状态.无需参考文档.这意味着它需要通过有条件的必要步骤来接受程序员.

Person makeHomer(PersonBuilder personBuilder){ //Injection avoids hardcoding implementation
    return personBuilder

         // -- These have good default values, may be skipped, and don't conflict -- //
        .doOptional() …
Run Code Online (Sandbox Code Playgroud)

java dsl design-patterns fluent builder

18
推荐指数
1
解决办法
2196
查看次数

Slack Workflow Builder URL 格式

我正在尝试使用 Slack Workflow Builder 格式化消息,但它不起作用。

我准备一个文本作为单个变量并将其传递给 Slack webhook。在 Slack Workflow Builder 中,我接收它并发送一条消息,只需将该单个变量内容放入文本消息中即可。消息看起来不错,但无法成功格式化消息中的链接。

我尝试了以下格式:[Link](http://link.com)<http://link.com|Link>. 这两个输出都是错误的,所有括号都没有格式化。但是当我将第一个变体发送[Link](http://link.com)到 Slackbot 时,它按预期工作 - 它显示只是可点击的Link

我究竟做错了什么?Slack 是否支持 Slack Workflow Builder 中的 URL 格式?我怎样才能在那里做呢?

更新:我还尝试将链接或其部分移动到单独的变量中,我注意到,将变量放入链接(圆括号中)会立即在预览区域中破坏它: 在此输入图像描述

workflow builder slack

18
推荐指数
1
解决办法
5799
查看次数

建筑师设计模式的缺点

使用构建器设计模式的缺点是什么.有没有?

编辑 - 我想知道使用构建器设计模式是否有任何不良后果?正如GOF书中所述,他们提到了设计模式的好坏后果.但他们没有提到建筑师设计模式的任何不良后果.

java oop design-patterns builder

17
推荐指数
2
解决办法
9971
查看次数