Analyse de la programmation orientée objet de 23 chaîne B de la conception de la responsabilité gloire du mode de modèle à un roi d'angle

·

Chaîne d'application du modèle de responsabilité dans la gloire du Roi

·

Insérer ici l'image Description

Un bref

Dans la gloire du centre commercial King, les joueurs peuvent participer à la loterie Indiana. Indiana dessiner deux types, l' un est solidaire de la loterie, de loterie autre diamant, en mode ordinaire deux de loterie Indiana peut être 60 par Diamond / loterie intégrale une fois, ou en diamant 270 / cinq points de tirage consécutif; dans lequel , lorsque la valeur atteint 201 diamants Indiana chanceux, vous pouvez obtenir roi de cristal rare, lorsque la valeur intégrale atteint 361 Indiana chance, vous pouvez obtenir l'honneur rare de cristal, le joueur peut utiliser le roi de cristal ou la gloire de cristal en échange d'un héros particulier, de la peau et de l' équipement et ainsi de suite.
Dans de nombreux cas, une demande peut être traitée plus d'un. De nombreuses applications peuvent manipuler des objets, et ils constituent une chaîne, en passant la demande de la chaîne, cette chaîne est appelée une chaîne de responsabilité.
Pour la description ci - dessus, le roi de gloire dans l' Indiana est un exemple de l'application de la chaîne de modèle de responsabilité dans la gloire du roi. Dans ce problème, le joueur en cliquant sur le 60 diamant / diamant pompage intégral une ou loterie 270 / d'intégration tirer cinq fois pour obtenir des résultats.

Plus précisément, nous avons d'abord réalisé par une interface de réception d'une demande présentée par un utilisateur, puis mettre en œuvre l'opération demandée à titre d'exemple trois classes de traitement spécifique, dans laquelle, par classe « Diamant 60 / intégrale de pompage d'un » prix atteindre 14 types au hasard pour donner un prix, comme « 270 diamants / cinq points de pompage » réalisée en 14 sortes de prix dans cinq randomisés pour recevoir des prix, « Heureusement, la valeur atteint une certaine valeur après » classe qui implémente les récompenses de cristaux rares.

D'autre part, la chaîne de modèle de responsabilité

Chaîne de responsabilité apprécié:
très résumée: une pluralité d'objets une chance de traiter la demande, afin d'éviter le couplage entre l'expéditeur et le destinataire de la demande, ces objets ensemble en une chaîne, et de transmettre la demande le long de la chaîne jusqu'à ce qu'un objet jusqu'à présent poignées.
Dans la conception du mode Java, vous devrez peut - être beaucoup d'objets design pour répondre à la demande de l'utilisateur.
Chaîne de responsabilité en utilisant une pluralité de requêtes d'utilisateurs de traitement de l' objet de modèle de maturité, la chaîne principale du motif de responsabilité est affecté à une demande de l' utilisateur pour de nombreux objets, qui sont organisés en une chaîne de responsabilité, à savoir, chaque objet contenant une référence à un objet ultérieur, et exige chaque objet dans la chaîne de responsabilité, si elles peuvent gérer la demande de l'utilisateur, de faire le traitement, l'utilisateur ne passe plus la demande à l'objet suivant dans la chaîne de responsabilité, si la demande de l'utilisateur ne peut pas être traité, il est nécessaire de transmettre la requête de l'utilisateur à l'objet suivant sur la chaîne de responsabilité.

Chaîne de structure de motif de responsabilité dans deux rôles:
gestionnaire : est une interface, l'utilisateur est responsable de la demande d' un procédé prédéterminé et un procédé de fixation d' un traitement spécifique par un traitement ultérieur par un objet de traitement spécifique;
❷ Le processus spécifique par : un traitement spécifique est mis en œuvre par les gestionnaires exemples de l'interface de classe. Le procédé défini par un procédé spécifique par appeler le gestionnaire d'interface utilisateur , le traitement de la requête de l' utilisateur, à savoir, après avoir reçu la demande de l'utilisateur, le gestionnaire d'interface appelle une méthode prédéterminée, pendant l'exécution du procédé, si trouvé pour gérer la demande de l'utilisateur , sur le traitement des données connexes, sinon il ne peut pas traiter les informations retour à l'utilisateur, et ensuite passer la demande de l'utilisateur à son objet successeur.

Chaîne de responsabilité modèle diagramme de classes UML:

Insérer ici l'image Description

Chaîne de modèle de responsabilité des avantages et des inconvénients:
avantages:
① objets uniquement dans la chaîne de responsabilité et de son successeur est sans rapport avec les relations bas de couplage et d' autres objets;
② Lors de l' attribution des responsabilités dans le traitement de ceux de la chaîne de responsabilité de l'application plus souple le sexe;
③ application peut dynamiquement ajouter, supprimer ou fonctions remaniera gestionnaires handlers,
④ application peut changer dynamiquement l'ordre entre le gestionnaire,
⑤ utilisateurs ne doivent pas connaître la chaîne de responsabilité du traitement de l' information par l'utilisateur ne saura pas à la fin est l'objet qui traitent sa demande, des
lacunes:
① aucune garantie que la demande doit être reçue: le destinataire ne sait pas, ne peuvent pas être traitées pour assurer certains;
② chaîne de responsabilité trop longtemps, ce qui affecte les performances du système. chaîne incorrecte peut construire une boucle infinie.

Chaîne de modèle de responsabilité des scénarios applicables:
① il y a de nombreux objets peuvent gérer la demande de l'utilisateur, dans l' espoir que le programme de traitement d'objet détermine automatiquement l'utilisateur pendant le fonctionnement,
② espoir que les utilisateurs ne doivent pas spécifier explicitement le destinataire de l'affaire, soumise à plus d'un destinataire demande;
③ programme développé par un objet dynamique peut traiter les demandes d'utilisateur un set.

En troisième lieu, la chaîne du schéma de configuration du modèle de responsabilité du code et le roi d'angle atteint la gloire

Chaîne de modèle de responsabilité atteindre ce diagramme de classes UML

Insérer ici l'image Description

éclipse de la structure figure

Insérer ici l'image Description
[Application de fonction principale (Application)]
Application.java

package angle_responsibility;

/*
          测试应用类 
*/

import angle_responsibility.Application;
import angle_responsibility.Diamond60DrawAPrize;
import angle_responsibility.Handler;
import angle_responsibility.Diamond270DrawFivePrizes;
import angle_responsibility.RareCrystalOfKings;

public class Application {
	    private Handler diamond60,diamond270,rareDiamond;    //责任链上的对象
	    public void createChain(){       //建立责任链
	    	diamond60=new Diamond60DrawAPrize();
	    	diamond270=new Diamond270DrawFivePrizes();
	    	rareDiamond=new RareCrystalOfKings();
	    	diamond60.setNextHandler(diamond270);
	    	diamond270.setNextHandler(rareDiamond);
	    }
	    public void reponseClient(int number){  //响应用户的请求
	    	diamond60.handleRequest(number);
	    }
	    public static void main(String args[]){
	       Application  application=new  Application();
	       application.createChain();
	       System.out.println("当点击“60钻石”抽一次时:");
	       System.out.print("[购买成功]");
	       application.reponseClient(60);
	       System.out.println("---------------------------");
	       System.out.println("当点击“270钻石”抽五次时:");
	       System.out.print("[购买成功]");
	       application.reponseClient(270);
	       System.out.println("---------------------------");
	       System.out.println("当钻石抽奖“幸运值达201时”:");
	       System.out.print("[购买成功]");
	       application.reponseClient(201);
	    }

	}

Handler (Handler)
Handler.java

package angle_responsibility;

/*
            角色1:处理者 :是一个接口,负责规定具体处理者处理用户请求的方法以及具体处理者设置后继对象的方法
*/

import angle_responsibility.Handler;

public interface Handler {
	   public abstract void handleRequest(int number);   //具体处理用户请求60钻石抽一次还是270钻石抽五次
	   public abstract void setNextHandler(Handler handler);  

}

gestionnaire DETAILLEE (ConcreteHandler)
Diamond60DrawAPrize .java

package angle_responsibility;

/*
              角色2.1:具体处理者 :具体处理者是实现处理者接口的类的实例
                              具体处理者通过调用处理者接口规定的方法,处理用户的请求
                              即在接到用户的请求后,处理者将调用接口规定的方法,在执行该方法的过程中
                              如果发现能处理用户的请求,就处理有关数据
                              否则就反馈无法处理的信息给用户,然后将用户的请求传递给自己的后继对象
*/

import angle_responsibility.Handler;

public class Diamond60DrawAPrize implements Handler{
	 private Handler handler;      //存放当前处理者后继的Hander接口变量
     public void handleRequest(int number){
    	if(number==60){              //60钻石抽一次
    		String random = "";
            String[] doc = {"白起", "夏侯惇", "甄姬", "金币288","小喇叭5","铭文碎片1600", "铭文碎片400","铭文碎片100", "铭文碎片25", "爱心气球(3日)", "亲密玫瑰","钻石48","龙域领主体验卡"};
            int index = (int) (Math.random() * doc.length);         //随机选取其一输出
            random = doc[index];
            System.out.println(random);
    	}
    	else
    		handler.handleRequest(number);     //将请求传递给下一个处理者
        }
      public void setNextHandler(Handler handler){
         this.handler=handler;
    }

}

Diamond270DrawFivePrizes, java

package angle_responsibility;

/*
              角色2.2:具体处理者 :具体处理者是实现处理者接口的类的实例
                              具体处理者通过调用处理者接口规定的方法,处理用户的请求
                              即在接到用户的请求后,处理者将调用接口规定的方法,在执行该方法的过程中
                              如果发现能处理用户的请求,就处理有关数据
                              否则就反馈无法处理的信息给用户,然后将用户的请求传递给自己的后继对象
*/

public class Diamond270DrawFivePrizes implements Handler{
	private Handler handler;      //存放当前处理者后继的Hander接口变量
    public void handleRequest(int number){
   	if(number==270){               //270钻石抽五次
   		   String random,random1,random2,random3,random4 = "";
           String[] doc = {"白起", "夏侯惇", "甄姬", "金币288","小喇叭5","铭文碎片1600", "铭文碎片400","铭文碎片100", "铭文碎片25", "爱心气球(3日)", "亲密玫瑰","钻石48","龙域领主体验卡"};
           int index = (int) (Math.random() * doc.length);      //随机选取其五输出
           random = doc[index];
           System.out.print(random+"、");
           int index1 = (int) (Math.random() * doc.length);
           random1 = doc[index1];
           System.out.print(random1+"、");
           int index2 = (int) (Math.random() * doc.length);
           random2 = doc[index2];
           System.out.print(random2+"、");
           int index3 = (int) (Math.random() * doc.length);
           random3 = doc[index3];
           System.out.print(random3+"、");
           int index4 = (int) (Math.random() * doc.length);
           random4 = doc[index4];
           System.out.println(random4);
   	}
   	else
            handler.handleRequest(number);      //将请求传递给下一个处理者
       }
     public void setNextHandler(Handler handler){
        this.handler=handler;
   }

}

RareCrystalOfKings.java

package angle_responsibility;

/*
             角色2.3:具体处理者 :具体处理者是实现处理者接口的类的实例
                             具体处理者通过调用处理者接口规定的方法,处理用户的请求
                             即在接到用户的请求后,处理者将调用接口规定的方法,在执行该方法的过程中
                             如果发现能处理用户的请求,就处理有关数据
                             否则就反馈无法处理的信息给用户,然后将用户的请求传递给自己的后继对象
*/

public class RareCrystalOfKings implements Handler{
	private Handler handler;      //存放当前处理者后继的Hander接口变量
    public void handleRequest(int number){
   	if(number==201){               //当幸运值满201时,出稀有水晶
           System.out.println("【稀有】王者水晶");
   	}
   	else
            handler.handleRequest(number);      //将请求传递给下一个处理者
       }
     public void setNextHandler(Handler handler){
        this.handler=handler;
   }

}

Capture d' écran Résultats d'exploitation
parce que le prix est aléatoire, tant que quelques photos prises test

Le premier pompage:
Insérer ici l'image Description
deuxième pompage:
Insérer ici l'image Description
......

N-ième pompage:

Insérer ici l'image Description
Plus de modèles de conception d'application dans la gloire du Roi en → Cliquez sur Mon Accueil

Message de bienvenue, ainsi que l'échange de l'apprentissage

Merci pour la lecture

FIN

Publié neuf articles originaux · a gagné les éloges 10 · vues 7068

Je suppose que tu aimes

Origine blog.csdn.net/IT_charge/article/details/105011204
conseillé
Classement