擅长:python、mysql、java
<p>这可以在不同的变体中完成,但基本上是关于委派方法:</p>
<pre><code>class RomanceBookSupport:
@staticmethod
def getTitle(book):
return book.title.upper()
class FictionBookSupport:
@staticmethod
def getTitle(book):
return book.title.lower().replace(' ', '_')
SUPPORTMAP = {
'romance' : RomanceBookSupport,
'fiction' : FictionBookSupport
}
class Book(object):
def __init__(self, title):
self.title = title
def setCategory(self, category):
self.category = category
def getTitle(self):
return SUPPORTMAP[self.category].getTitle(self)
romance_book = Book('Love Story')
romance_book.setCategory('romance')
print romance_book, romance_book.getTitle()
fiction_book = Book('Star Wars')
fiction_book.setCategory('fiction')
print fiction_book.getTitle()
fiction_book.setCategory('romance')
print fiction_book.getTitle()
</code></pre>