Tuesday, December 1, 2009

a manager of entity objects (memory leak

(In fact, the paramount justification/motivation of this entire concept is memory leak prevention in C/C++, perhaps in conjunction with a custom Allocator. A java guy may think this "manager" concept sounds cool and impressive but it's actually less relevant to Java. Like all practical ideas, it started as a simple class with a single purpose and a single field -- the pointer. An instance of this class is always an auto-variable on the heap, so it's AUTOmatically destructed. A non-default dtor deletes the pointer. RAII is one of the simplest yet most effective ways to prevent memory leak.)

You can design a manager for your entity/domain objects. For example, I had a serializer/deserializer for my message objects.

A classic manager is designed to take up responsibility of object creation (like factory), object persistence, object lookup, object destruction, object linking (dependency injection?).... For overly complex objects, it might be beneficial to separate these lifecycle logic and object manipulation into a manager object, and leave a clean set of behavior inside the domain object.

In contrast, Some designers prefer to consolidate all of these logic in the domain object. A code smell -- a well-defined, well-modeled domain model class having methods that return instances of itself. Static or non-static methods, but no factory.

a manager is often a singleton or a "static" thing

== eg of managers ==
* a manager often handles persistence of domain objects. Conversely, I think the same manager can handle object loading from database. Such a manager is not a DAO but a choke point to the DAO layer or persistence layer.

* object validity check -- sometimes can be done better by a manager, esp. if that expertise lies in the manager. In one project, i need to check validity of a family of domain objects. If those objects are not derived from each other, then it's perhaps best to put the validation logic in the manager.

* Factories are managers
* xml bean factory in dependency injection
* EJB container is a manager
* object visibility checker??
* object mutability/read-only checker -- error memos read-only checker?
* resource pool is a manager, but objects in it aren't domain models

No comments:

Total Pageviews

my favorite topics (labels)

_fuxi (302) _misLabel (13) _orig? (3) _rm (2) _vague (2) clarified (58) cpp (39) cpp_const (22) cpp_real (76) cpp/java/c# (101) cppBig4 (54) cppSmartPtr (35) cppSTL (33) cppSTL_itr (27) cppSTL_real (26) cppTemplate (28) creditMkt (14) db (65) db_sybase (43) deepUnder (31) dotnet (20) ECN (27) econ/bank` (36) fin/sys_misc (43) finGreek (34) finReal (45) finRisk (30) finTechDesign (46) finTechMisc (32) finVol (66) FixedIncom (28) fMath (7) fMathOption (33) fMathStoch (67) forex (39) gr8IV_Q (46) GTD_skill (15) GUI_event (30) inMemDB (42) intuit_math (41) intuitFinance (57) javaMisc (68) javaServerSide (13) lambda/delegate (22) marketData (28) math (10) mathStat (55) memIssue (8) memMgmt (66) metaProgram` (6) OO_Design (84) original_content (749) polymorphic/vptr (40) productive (21) ptr/ref (48) py (28) reflect (8) script`/unix (82) socket/stream (39) subquery/join (30) subvert (13) swing/wpf (9) sysProgram` (16) thread (164) thread_CAS (15) thread_cpp (28) Thread* (22) timeSaver (80) transactional (23) tune (24) tuneDB (40) tuneLatency (30) z_ajax (9) z_algoDataStruct (41) z_arch (26) z_arch_job (27) z_automateTest (17) z_autoTrad` (19) z_bestPractice (39) z_bold (83) z_bondMath (35) z_book (18) z_boost (19) z_byRef^Val (32) z_c#GUI (43) z_c#misc (80) z_cast/convert (28) z_container (67) z_cStr/arr (39) z_Favorite* (8) z_FIX (15) z_forex (48) z_fwd_Deal (18) z_gz=job (33) z_gzBig20 (13) z_gzMgr (13) z_gzPain (20) z_gzThreat (19) z_hib (19) z_IDE (52) z_ikm (5) z_IR_misc (36) z_IRS (26) z_javaWeb (28) z_jdbc (10) z_jobFinTech (46) z_jobHunt (20) z_jobRealXp (10) z_jobStrength (15) z_jobUS^asia (27) z_letter (42) z_linq (10) z_memberHid` (11) z_MOM (54) z_nestedClass (5) z_oq (24) z_PCP (12) z_pearl (1) z_php (20) z_prodSupport (7) z_py (31) z_quant (14) z_regex (8) z_rv (38) z_skillist (48) z_slic`Problem (6) z_SOA (14) z_spring (25) z_src_code (8) z_swingMisc (50) z_swingTable (26) z_unpublish (2) z_VBA/Excel (8) z_windoz (17) z_wpfCommand (9)

About Me

New York (Time Square), NY, United States
http://www.linkedin.com/in/tanbin