2009-12-01 5 views
0

다음 코드가 있습니다.내 이름에서 더 정확한 이름은 관리자 나 공장 (또는 다른 것)입니까?

PhotoFactory factory = PhotoFactory.getFactory (PhotoResource.PICASA); 
PhotoSession session = factory.openSession (login, password); 
PhotoAlbum album = factory.createAlbum(); 
Photo photo = factory.createPhoto(); 
album.addPhoto (photo); 
if (session.canUpload()) { 
    session.uploadAlbum (album); 
} 
session.close(); 

올바른 이름을 선택했는지 확신 할 수 없습니다. 그다지 중요하지 않지만, 제 경우에 당신이 선택한 것을 궁금 해서요. 다른 버전은 관리자입니다 :

PhotoManager manager = PhotoManager.getManager (PhotoResource.PICASA); 
PhotoSession session = manager.openSession (login, password); 
PhotoAlbum album = manager.createAlbum(); 
Photo photo = manager.createPhoto(); 
album.addPhoto (photo); 
if (session.canUpload()) { 
    session.uploadAlbum (album); 
} 
session.close(); 

UPD : 최대 절전 모드 javadocs에서 다음 예제를 발견했습니다 :

 Session sess = factory.openSession(); 
Transaction tx; 
try { 
    tx = sess.beginTransaction(); 
    //do some work 
    ... 
    tx.commit(); 
} 

명명 오류입니까?

답변

1

매우 높은 수준에서 클래스의 인스턴스 생성에만 책임이있는 경우 Factory라고 부릅니다. 진행중인 객체의 존재를 감독해야하는 경우 관리자 및 다른 객체와 어떻게 관련되는지를 알려줍니다.

게시 한 코드 스 니펫에서 객체를 생성하므로 내 생각에는 Factory 적절한 이름입니다. 비록 당신이 수업의 개념적 책임이 무엇인지, 미래에 확장 될 수 있는지를 명심해야한다. 나는 고전적인 공장 세션 자체를 만드는 방법에 대해 걱정이 아니라 필요에 따라 자신의 createFoo 전화로 전달 세션을하지 기대했다, 그래서 일이 설정되어 일부 퍼지 요인이 분명히있다

. 저는 개인적으로 세션 생성에 대한 책임이있는 다른 추상적 인 엔티티를 가지 고이를 PhotoFactory에 전달할 것이라고 생각합니다.

0

'Factory'로 끝나는 객체는 일반적으로 객체의 새 인스턴스를 만드는 팩토리 패턴의 구현으로 간주되므로 두 번째 솔루션 (관리자)을 선택합니다. 이는 특정 서비스에 대한 세션을 관리하므로 예제에는 해당되지 않습니다.

이 예제에서는 실제로 getManager이라는 첫 번째 정적 메서드 호출은 실제로 Manager 개체의 인스턴스를 생성하므로 팩토리입니다.