我正在编写一个库,我想以一种潜在用户发现它易于使用该库的方式来构建我的代码。我看过这个很棒的 API 设计视频。黄金法则之一是拥有良好的设计模式。我有两个想法。外观设计模式和工厂设计模式。这两种设计模式都用于在程序代码中实现高度抽象,以供用户使用。
我发现申请哪一个或两者都申请是如此困难。当然,我想避免使用反模式。
我使用的语言是 Python,它与上面提供的视频链接中强调的 Java 完全不同。我的图书馆将如何运作:
Character class
Window class
可以创建许多角色对象。
假设我要使用外观设计模式,我将在外观构造函数中初始化这两个类,以便可以在方法中调用它们:
门面类():
__init__(self): self.character = Character() self.window = Window()
在这里,我将创建表示在字符和窗口类中创建的方法的方法。然后用户可以轻松调用这些:
Facade = Facade()
Facade.methodUsedInCharacterClass()
Facade.methodUsedInCharacterClass()
Facade.methodUsedInWindowClass()
但在这里我看到外观有问题,你可以有两个不同的角色,你会想做不同的事情。你可以这样做:
Facade = Facade()
badguy= Facade.methodUsedInCharacterClass()
goodguy= Facade.methodUsedInCharacterClass()
Facade.methodUsedInWindowClass()
然后,您不能使用 badguy 或 goodguy 变量来调用其他行为,例如
badguy.rotate()
goodguy.jump()
这是不允许的,但有没有办法做到这一点?
此外,由于构造函数正在调用类,因此可以使用工厂方法,它在运行时根据我自己的理解选择要执行的类。我只能想象,但在这种情况下,它将如何应用?
谢谢!