Bir bu işlemek için bir yol, ya da en azından PHP bahsediyoruz aynı şeyi yapmak, yansımasıdır. Sen tam nitelikli bir sınıf adı belirten bir dize gelen bir Class
nesne elde ve dinamik kendisi yeni bir örneğini oluşturmak için bu sınıfı kullanabilirsiniz.
public EditPart createEditPart(String name) throws [lots of stuff] {
return Class.forName(name).asSubclass(EditPart.class).newInstance();
}
Ancak, bu Java kullanmak için nispeten verimsiz bir yoldur, ve ben mutlaka bunu tavsiye etmem. Diğer bazı diller (PHP gibi) oldukça liberal yansıması kullanmak, ama Java ile çok değil. Amber'in fabrika fikri iyi biridir ve bunu yaparken sanki, ben o ile gitmek olabilir.
Eğer oluşturmak istiyorsanız sizin EditPart
yerine EditPart
altsınıfın adına daha (kod örneğindeki gibi) model
nesne sınıfına dayanan , o zaman yansıma kullanamazsınız. Evet, yapabilirsiniz, ama yine EditPart
modelin hangi tip karşılık programı anlatmak için bir yol gerekir. Bir seçenek, bazı arayüzü Object
den model
parametresinin türünü değiştirmek olacaktır, bir döndüren bir yöntem olması yazardı ki, EditModel
söylüyor Uygun parçası örneği. Şöyle:
public interface EditModel {
public EditPart getEditPart();
}
Sonra sadece sizin createEditPart
olarak yazabilirsiniz
public EditPart createEditPart(EditModel model) {
return model.getEditPart();
}
(Aslında, bu kadar basit eğer belki de hiç createEditPart
gerekmez). Eğer istemediğiniz ya da bunu yapamıyorsanız, size could dinamik modeli sınıfın adına göre parçası sınıfını seçer yansıması ile bir şey kurmak, ama bu gerçekten gereksiz yere karmaşık geliyor. Bu noktada kesinlikle fabrika deseni ile gidiş daha iyi olurdu.