如何避免进行几乎相同的继承

时间:2019-02-14 17:35:18

标签: python oop inheritance

我有一个OnlineState类,该类应该设置客户端并连接到服务器,并且还可以用作游戏状态(菜单,暂停,存储等)。我希望如果还没有服务器,则该类将创建服务器,然后连接到该服务器。我已经有一个Client类和一个继承LocalClient并且可以工作的Client类。我可以创建一个OnlineStateClientOnlineStateLocalClient类,但是我计划将这些类继承很多,并且这种方法将导致相同的代码。这是我的代码:

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

我该怎么解决这个问题?

2 个答案:

答案 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中,您只需要声明方法,而不必为方法的定义烦恼。因此,不会出现发出相同的代码,您可以尽可能多地继承它。