Less APIs or more encapsulation?

一首诗 newptcai at gmail.com
Wed Sep 9 11:08:47 EDT 2009


2 class,  B contains C.   When user want to use some service of C,
there are two choice:

First, more encapsulation:

=============================
class B:
    def newMethod(self):
        self.c.newMethod()

class C:
    def newMethod(self):

      #do something
        pass

b.newMethod()


==============================

Sencond : Call seice of f c directly:


=============================

class B:
    pass

class C:
    def newMethod(self):
        # somethining
        pass

b.c.newMethod()

=============================


Generally, what I learned from books told me that 1st choice is
better.

But when C has many many methods to expose to outer user, 2nd choice
seems to be more reasonable I In the first design, B.newMethod did
nothing really useful.

ctaully, , there are D/E/F, etc. in B we methodhod has to be exposed
to user code,  which makes encapsulation more tedious.


In fact, these classes,  C/D/E/F all have different jobs, but they all
belongs to a real world object "B", B is only a container of C/D/E/F.

What do you think about it?



More information about the Python-list mailing list