내용 보기
작성자
관리자 (IP : 172.17.0.1)
날짜
2020-07-10 04:57
제목
[C#] Factory pattern에서 분기문을 쓰지 않고, Class 생성 시키기
This is not a factory pattern. A factory will always have some constructor logic in it, at least one new. That's the idea of a factory: the caller doesn't have to worry about how objects are created. This is a singleton repository. So first of all, instead of using an array, you should be having a type indexed dictionary. private static Dictionary<Type, Feed> _singletons = new Dictionary<Type, Feed>(); After that, you don't need a register method. The dictionary should be filled automatically when you retrieve singletons. Now I suppose your Feed class has a default constructor without arguments. In that case, you can implement a factory method directly from the abstract class Feed. We're going to use some generics here, because it allows you to control inheritance:
Note that I included a threadsafe behaviour which is a good thing to do when you work with singletons. Now if you want to get the singleton for a given type inheriting from Feed (let's call it SpecializedFeedType), all you have to do is: var singleton = FeedSingletonRepository.GetFeed<SpecializedFeedType>(); or SpecializedFeedType singleton = FeedSingletonRepository.GetFeed(); which is the same line with a slightly different syntax. Edit2: changed some syntax errors. |
출처1
http://stackoverflow.com/questions/4498104/factory-pattern-implementation-in-c-sharp
출처2