假设成立一个外包公司,主要给一些私营业主建网站。商家客户要求的功能包括信息发布、产品展示、博客留言等功能。 共有a-j 10个客户,其中a-c客户需要信息发布,d-f需要产品展示,g-j客户需要博客功能。 利用享元模式模拟该公司建立网站,输出如下: 客户a: 信息发布 客户b:信息发布 。。。 网站分类总数为:3
时间: 2024-02-24 10:58:21 浏览: 15
以下是基于享元模式的代码实现,可以实现上述功能:
```python
class Website:
def __init__(self, website_type):
self.website_type = website_type
def use_website(self, customer_name):
print(f"客户{customer_name}: {self.website_type}功能")
class WebsiteFactory:
websites = {}
def get_website(self, website_type):
if website_type not in self.websites:
self.websites[website_type] = Website(website_type)
return self.websites[website_type]
if __name__ == '__main__':
factory = WebsiteFactory()
customers = {
"a": "信息发布",
"b": "信息发布",
"c": "信息发布",
"d": "产品展示",
"e": "产品展示",
"f": "产品展示",
"g": "博客",
"h": "博客",
"i": "博客",
"j": "博客"
}
for name, website_type in customers.items():
website = factory.get_website(website_type)
website.use_website(name)
print(f"网站分类总数为:{len(factory.websites)}")
```
输出结果为:
```
客户a: 信息发布功能
客户b: 信息发布功能
客户c: 信息发布功能
客户d: 产品展示功能
客户e: 产品展示功能
客户f: 产品展示功能
客户g: 博客功能
客户h: 博客功能
客户i: 博客功能
客户j: 博客功能
网站分类总数为:3
```
其中,Website 类表示网站的功能,WebsiteFactory 类表示网站的工厂类,可以根据网站类型创建不同的 Website 对象。在客户端中,通过 WebsiteFactory 创建不同的网站对象,并使用它们的功能。由于同种类型的网站只需要创建一个对象来共享使用,因此可以减少内存的使用。