我有一个OnlineState
类,该类应该设置客户端并连接到服务器,并且还可以用作游戏状态(菜单,暂停,存储等)。我希望如果还没有服务器,则该类将创建服务器,然后连接到该服务器。我已经有一个Client
类和一个继承LocalClient
并且可以工作的Client
类。我可以创建一个OnlineStateClient
和OnlineStateLocalClient
类,但是我计划将这些类继承很多,并且这种方法将导致相同的代码。这是我的代码:
class Client:
def __init__():
# Connects to the server
class LocalClient(Client):
def __init__():
# Creates a server
Client.__init__(self) # connects to it
class OnlineState(Client, State):
def __init__(local):
if local:
# connect
else:
# Create a server and connect
我该怎么解决这个问题?
答案 0 :(得分:0)
编辑:对不起,您的语言不集中,只包含对相同问题的看法。
接口是您的朋友,关注点分离是oop的主要标题。客户端和本地客户端应具有相同的方法和属性。 您可以通过界面使用这两个来管理状态。
您可以使用客户端工厂来创建本地客户端或在线客户端。 您需要使用另一个类来管理连接状态行statefactory。 OOP不仅可以彼此继承类,还可以使用相似性来共同生活。
interface IClient
def __init__():
# Connects to the server
def __State__() => clintState
class Client:IClient
def __init__():
# Connects to the server
def __State__() => clintState
class StateFactory(IClient):
def __init__(local):
switch IClient.state
case online:
# do nothing
case local:
# Iclient = new Client(connProp)
default :
希望有帮助,我建议您检查创意设计模式
答案 1 :(得分:0)
我建议您使“ OnlineStateClient”接口和OnlineStateLocalClient接口成为类,而不是使用类。由于在Interfaces中,您只需要声明方法,而不必为方法的定义烦恼。因此,不会出现发出相同的代码,您可以尽可能多地继承它。