Получите класс тот определенный метод

Вы теряете несколько преимуществ шаблона строителя, как уже указывалось ( новый уродлив и труднее поддерживать и протекать детали по сравнению с чистым строителем).

Однако мне больше всего не хватает того, что шаблон компоновщика можно использовать для обеспечения того, что называется «плавными интерфейсами» .

Вместо этого:

ProductConfig config = new ProductConfig("Vodka");
config.alcohol = 0.38;
config.size = 0.7;
config.price = 17.99;
Product p = new Product(config);

Вы можете сделать:

ProductFactory.create()
    .drink("Vodka")
    .whereAlcohoolLevelIs(0.38)
    .inABottleSized(0.7)
    .pricedAt(17.99)
    .build();

Не всем нравятся беглые интерфейсы, но они определенно очень хорошо используют шаблон строителя (все бегло интерфейсы должны использовать шаблон компоновщика, но не все шаблоны компоновщика являются свободными интерфейсами).

В некоторых замечательных коллекциях Java, таких как коллекции Google, очень либерально и очень хорошо используются «плавные интерфейсы» . Я бы выбрал их в любой день по сравнению с вашим подходом «легче вводить / меньше символов» :)

77
задан jamylak 2 July 2012 в 23:25
поделиться