模式设计-----抽象工厂模式

抽象工厂模式(Abstract Factory)属于创建型工厂模式的一种。

特点:客户仅与抽象类定义的接口交互,而不使用特定的具体类的接口。

这里是一个python的例子,运行环境是python 2.7

import random

class PetShop:
    """A pet shop"""

    def __init__(self, animal_factory=None):
        self.pet_factory = animal_factory

    def show_pet(self):
        """Create and show a pet using the abstract factory"""
        pet = self.pet_factory.get_pet()
        print("This is a lovely", pet)
        print("It says", pet.speak())
        print("It eats", self.pet_factory.get_food())

class Dog:
    def speak(self):
        return "woof"

    def __str__(self):
        return "Dog"

class Cat:
    def speak(self):
        return "meow"

    def __str__(self):
        return "Cat"

# Factory classes
class DogFactory:
    def get_pet(self):
        return Dog()

    def get_food(self):
        return "dog food"

class CatFactory:
    def get_pet(self):
        return Cat()

    def get_food(self):
        return "cat food"

def get_factory():
    """Let's be dynamic!"""
    return random.choice([DogFactory, CatFactory])()

if __name__ == "__main__":
    factory = PetShop(get_factory())
    for i in range(3):
        factory.show_pet()
        print("="*20)


这里主要是对抽象工厂进行简单的学习。

这里主要是通过get_factory函数来进行工厂的选择。同时每个真实对象都对应一个工厂类的方式构建

在每个新对象创建的时候都要重新定义一个工厂类,这样使用抽象工厂增加了类的数量,对工程的构建中类的数量带来一定的麻烦。


转载于:https://my.oschina.net/u/1450570/blog/410700

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值