From: Jozef M. <mis...@ho...> - 2008-03-07 12:38:57
|
i will try to describe my design of already discussed CPage modularization. Goals: 1) make cpage more modular, less error prone, easy extensible Advantages: 1) better encapsulation 2) more modular 3) can be tested more easily 4) cpage and modules can have different owners State-of-art: - can be compiled - not tested yet - i am waiting for michal's implementation of annotations module Disadvantages: not known for me Description: Page consists of several logical/abstract modules: the actual contents (text,images,...), annotations, fonts, changes maybe more if we decide to support others(thumbnails, transition effects, metadata, ...). They are all part of a dictionary object representing a page. CPage is the default access point to this dictionary. In current implementation, everything is handled in cpage. it contains container of fonts, of annotations, of contenstreams etc etc. But, the problem is that everything is implemented in cpage making it too big. Every time we decide to extend the functionality (as was the case with annotations) many problems will arise. (Annotations are implemented by michal and therefore he needed to touch several functions of cpage not implemented by him and vice versa for me. it made working with cpage very difficult and error prone.) My aim was to make CPage a composition of modules with each call to CPage delegated to appropriate module. It is clear that the interface of CPage is not changed. It can be easily extended and each module can be owned by someone else. I hope that it is also clear that these modules must sometimes work together but it should not be necessary to know the innards of other module. E.g. contents observers are implemented in contents module and no other module needs to see them. you can have a look on current implementation of devel-jms-cleanup-1 branch. jozo _________________________________________________________________ Helping your favorite cause is as easy as instant messaging. You IM, we give. http://im.live.com/Messenger/IM/Home/?source=text_hotmail_join |