2014-07-19 3 views
1

Je souhaite simplement appeler la méthode Type.getNo() pour obtenir un résultat de calcul. Si if then else bloc dans le Type.getNo() dit "prendre des données de TypeX.getNo()", alors TypeX.getNo() est appelé en interne; ensuite, le résultat sera envoyé à Type.getNo(), et à partir de là, Type.getNo() retournera la valeur à l'utilisateur. Dans le second cas, le résultat de TypeY.getNo() sera utilisé.quelle devrait être la relation entre ces classes?

Pour la relation de classe, quelle devrait être la relation entre ces classes? Je pensais qu'il semblait extends relation mais, je suis un peu confus sur la façon de mettre en œuvre le scénario. Pour faire avancer mon projet, devrais-je utiliser Design Pattern pour l'implémenter? Si oui, quel modèle de conception est approprié pour ce cas? Je pense que chain of responsibility semble vouloir corriger, mais dans chain of responsibility, la décision est prise sur la troisième classe qui, dans mon cas, devrait être dans l'autre paquet. D'un autre côté, toute décision devrait être prise dans la même classe. Juste valeur de retour va être disponible dans d'autres paquets.

     |--------------------| 
         |  Type   | 
         |--------------------| 
         | +getNo():int | 
         |     | 
         |--------------------| 



    |------------------|     |----------------------| 
    |  TypeX  |     |  TypeY   | 
    |------------------|     |----------------------| 
    |     |     |      | 
    | +getNo():int |     |  +getNo():int | 
    |     |     |      | 
    |------------------|     |----------------------| 

    TypeX and TypeY are visible to only to other classes in the same package 

Répondre

0

Utilisez une classe abstraite Type et deux classes TypeX, TypeY qui s'étendent Type.

Type

abstract class Type { 

    int no; 

    int getNo() { 
     return no; 
    } 
} 

TypeX

public class TypeX extends Type { 

    public TypeX(int no) { 
     this.no = no; 
    } 

    @Override 
    int getNo() { 
     System.out.println("TypeX.getNo()"); 
     return no; 
    } 
} 

TypeY

public class TypeY extends Type { 

    public TypeY(int no) { 
     this.no = no; 
    } 

    @Override 
    int getNo() { 
     System.out.println("TypeY.getNo()"); 
     return no; 
    } 
} 

App

public class App { 

    public static void main(String[] args) { 
     Type x = new TypeX(1); 
     Type y = new TypeY(2); 

     System.out.println(x.getNo()); 
     System.out.println(y.getNo()); 
    } 
} 

sortie:

TypeX.getNo() 
1 
TypeY.getNo() 
2 
Questions connexes