오늘 클래스의 새 인스턴스를 가져 오기 위해 팩토리를 작성하라는 요청을 받았습니다. 나는 이것을 아주 쉽게했다.자바에서 클래스의 새 인스턴스를 반환하는 팩토리 메소드를 동기화해야합니까?
내 모든 동료 중 한 명이 내 코드를보고이 작업을 수행하는 방법을 동기화하라고했습니다.
나는 왜 그에게 물었고, 그는 그것이 옳은 것이라고 대답했다. (질문이있을 때 아무런 설명도하지 않았다.) 나는 내가 객체의 상태를 조작하지 않기 때문에 믿을 때 그것을하지 않았다. 나는 그것을 동기화 할 필요가 없다.
나는 그저 내가 옳았는지 분명히하고 싶다. 내가 틀렸다면 누군가가 왜 동기화가 필요한지 설명 할 수 있습니까? 의견에 따라
예를 들어
private static Map<String, IProduct> products = new HashMap<String, IProduct>();
public IProduct getInstance(code){
return products.get(code).create();
}
편집 : 나는 지금에 액세스 할 수 없습니다로
- 나는 전체 코드를 줄 수 없습니다. 내가 일하러 돌아올 때 나는 그것을 할 것이다.
- 제품은
Map<String, IProduct>
create()
는IProduct
를 구현하는 클래스의 메소드입니다. 이 메서드는 구현 클래스의 새 인스턴스를 반환합니다.- 정적지도에 넣는 인스턴스는
Product
의 인스턴스를 '새로 만들기'위해서만 사용됩니다. 우리는 팩토리 메소드를 동기화 할 경우 하나 개의 스레드가 새로운 인스턴스를 검색하는 동안
'products' 란 무엇이며'???. create()'메서드는 무엇입니까? – qxz
정말로 상태를 돌연변이시키지 않는다면 이것은 필요하지 않을 것이지만 실제 코드를 보여주기 전까지는 알 수 없습니다. 그런데 당신의 두뇌를 사용하지 않고 "모두 아는"동료의 말을 듣지 않는 것을 축하합니다. 엔지니어는 분별있는 주장으로 모든 진술을 뒷받침 할 수 있어야합니다. – Dici
전체 수업을 게시 할 수 있습니까? 동기화가 필요한지 판단하는 것이 더 쉬울 것입니다. – pablochan