1
Je n'ai actuellement pas le temps de creuser le sujet :/
Je me le note pour ne pas oublier.
2
La seconde Factory est assez particulière à utiliser, et je ne pense pas que tu aies à le faire. Attarde-toi surtout sur l'Abstract et comprends-là bien.
3
Hum, de ce que tu racontes, et au vu de ton code, le problème ne se situe pas où tu le pense, mais tu l'as tracé.
La cause de ton problème est de n'avoir qu'une seule instance de "bloc". Tu utilises toujours la même, donc poser un second bloc sera en fait remplacer le premier, vu que le second est le premier (ouais... c'est pas méga clair, mais l'idée y est).
Il ne faut pas réutiliser la même instance, mais ajouter un bloc en plus de ceux déjà existant, donc passer par une Collection.
Nota : attentions aux conventions Java 
Les noms de package sont en minuscules.
Les noms de classes respectent le UpperCamelCase : débutent par une majuscule, chaque nouveau mot débute par une majuscule.
Les noms de variables respectent le lowerCamelCase : débutent par minuscule, chaque nouveau mot débute par une majuscule.
Les noms de constantes sont en MAJUSCULE_AVEC_SEPARATEUR.
Les noms doivent être parlant.
A côté de ça, pense bien à utiliser les generics pour tes Collections 