Вот такая же проблема перевода на Java.
Оригинальный пример
public interface UserFactoryIF
{
User createNewUser();
}
Тогда реализация Завода
public class UserFactory implements UserFactoryIF
{
public User createNewUser()
{
// whatever special logic it takes to make a User
// below is simplification
return new User();
}
}
Я не вижу каких-либо особых преимуществ для определения интерфейса для завода, так как вы определяете единый интерфейс для централизованного производителя. Обычно я нахожу, что мне нужно производить множество различных реализаций одного и того же продукта, и моей фабрике нужно потреблять много разных параметров.То есть, мы могли бы иметь:
public interface User
{
public String getName();
public long getId();
public long getUUID();
// more biz methods on the User
}
Завод будет выглядеть следующим образом:
public class UserFactory {
public static User createUserFrom(Person person) {
// ...
return new UserImpl(...);
}
public static user createUserFrom(AmazonUser amazonUser) {
// ... special logic for AmazonWS user
return new UserImpl(...);
}
private static class UserImpl implements User {
// encapsulated impl with validation semantics to
// insure no one else in the production code can impl
// this naively with side effects
}
}
Надежда это получает через точку.
Почему ...? Какая польза от этого всегда? – yfeldblum
Хотя ваш пример находится на C#, нет причин, по которым мы не можем задавать этот вопрос дизайна на Java. – Alan
Да, я не собирался оставлять людей в джавах, или кого-то в этом отношении –