1. Java / Говнокод #17180

    +71

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    public static void main(String[] args) {
    	Map<String, ClassLink<?>> children = new HashMap<String, ClassLink<?>>();
    	children.put("test1", new ClassLink<Dall>());
    	children.put("test2", new ClassLink<Son>());
    
    	String test = children.get("test1").classObjectGenerator().getName();
    	test.toString();
    
    }
    
    static class ClassLink<X extends ChildBase> {
    	public X classObjectGenerator() {
    		return (X) new Dall();
    	};
    }
    
    static class Dall implements ChildBase {
    	public String getName() {
    		return "Ivan";
    	}
    }
    
    static class Son implements ChildBase {
    	public String getName() {
    		return "Vera";
    	}
    }
    
    interface ChildBase {
    	String getName();
    }

    Фабрика. Загнать в map легковесный класс - создатель, а когда понадобится - создать объект.

    Запостил: nick252, 26 Ноября 2014

    Комментарии (10) RSS

    • children.put(dick)
      Ответить
      • Ты что творишь, содомит? Мизулина же забанит...
        Ответить
    • Ну обычная такая фабрика. В чем говно?
      Ответить
      • new ClassLink<Dall>()
        public X classObjectGenerator() {
        		return (X) new Dall();
        	};

        жабогенерики - это не крестошаблоны и в классе нельзя узнать о типе. Фабрики как бы и нет
        Ответить
        • А, так там всегда Dall создается... Не по глазам было ;)
          Ответить
        • Ну можно просто классы в мапу загнать и дергать newInstance или как там его зовут.
          Ответить
        • Можно, если передать Class в класс) Но инстанциировать один хрен рефлексией.

          Не надо в джаве так делать (ну только если ты не инфрасткруктурный код типа спринга пишешь)
          Ответить

    Добавить комментарий