내 경우에는 어떤 이름이 더 정확합니까 : 관리자 또는 공장 (또는 다른 것)은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1825286

  •  22-07-2019
  •  | 
  •  

문제

다음 코드가 있습니다.

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 : 방금 Hibernate Javadocs에서 다음 예를 찾았습니다.

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

그게 이름 지정 실수인가요?

도움이 되었습니까?

해결책

매우 높은 수준에서, 나는 그것이 수업 인스턴스를 만드는 데 책임이 있다면 그것을 공장이라고 부를 것입니다. 그리고 객체의 지속적인 존재를 감독 해야하는 경우 관리자, 그리고 다른 객체와 어떻게 관련되는지 등.

코드 스 니펫에서 당신은 당신이 게시 한 객체 만 만들기 때문에 공장은 적절한 이름입니다. 비록 당신은 수업의 개념적 책임이 무엇인지, 그리고 그들이 미래에 확장 될지 여부를 염두에 두어야합니다.

즉, 나는 고전적으로 공장이 세션 자체를 만드는 것에 대해 걱정할 필요가없고 오히려 세션을 전달할 것을 기대할 것입니다. createFoo 필요에 따라 호출이므로 상황이 설정 될 때 퍼지 요인이 분명히 있습니다. 나는 개인적으로 세션을 만들고있는 다른 추상 엔티티를 가질 것이라고 생각합니다.

다른 팁

'공장'으로 끝나는 객체는 일반적으로 공장 패턴의 구현으로 간주되므로 본질적으로 새로운 객체 인스턴스를 생성하기 때문에 두 번째 솔루션 (관리자)을 선택합니다. 특정 서비스에 대한 세션을 관리하기 때문에 예에서는 그렇지 않습니다.

이 예에서 좋은 점은 사실 첫 번째 정적 메소드 호출입니다. getManager 실제로 인스턴스를 생성하기 때문에 공장입니다. Manager 사물.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top