Implementieren Sie die Werke, die der Benutzer sehen kann, damit sie nach dem Bewertungssystem des Films sortiert werden können.
Das Filmbewertungssystem ist eine altersbeschränkende Regelung. G: Alle Altersgruppen PG12: 12 Jahre und älter R15 +: 15 Jahre und älter R18 +: 18 Jahre und älter Es gibt Kategorien wie.
Das Statusmuster befindet sich im roten Rahmen und wird vom Benutzer verwendet. Das RatingSystem wird als Schnittstelle verwendet und jede Einschränkung ist in G / PG12 / R15 implementiert. Das Fehlen von R18 setzt voraus, dass Sie sich nicht mit R18-Filmen befassen.
-Die Altersgrenze kann auf die Implementierungsklasse RatingSystem (G / PG / R15) beschränkt werden. (Implementierungslokalisierung) ・ R18-Filme werden verarbeitet, und selbst wenn Spezifikationen hinzugefügt werden, können sie problemlos verarbeitet werden. (Leicht zu ändern)
interface RatingSystem
RatingSystem.java
package state.rating;
public interface RatingSystem {
public boolean checkLimit(int age);
}
class G
G.java
package state.rating;
public class G implements RatingSystem {
@Override
public boolean checkLimit(int age) {
return true;
}
}
class PG12
PG12.java
package state.rating;
public class PG12 implements RatingSystem {
@Override
public boolean checkLimit(int age) {
if(12 <= age)
return true;
return false;
}
}
class R15
R15.java
package state.rating;
public class R15 implements RatingSystem {
@Override
public boolean checkLimit(int age) {
if(15 <= age)
return true;
return false;
}
}
class Movie
Movie.java
package state.rating;
public class Movie {
private String _title;
private RatingSystem _rating;
public Movie(String title, RatingSystem rating) {
_title = title;
_rating = rating;
}
public String title() {
return _title;
}
public boolean checkLimit(int age) {
return _rating.checkLimit(age);
}
}
class User
User.java
package state.rating;
public class User {
private String _name;
private int _age;
User(String name, int age){
_name = name;
_age = age;
}
public String name() {
return _name;
}
public int age() {
return _age;
}
public void play(Movie movie) {
System.out.println(movie.title() + "Spielen.");
if(!movie.checkLimit(_age)) {
System.out.println(" >>>Kann aufgrund eines Altersbeschränkungsfehlers nicht gespielt werden.");
stop(movie);
}
}
public void stop(Movie movie) {
System.out.println(movie.title() + "Stoppen.");
}
}
Main.java
package state.rating;
public class Main {
public static void main(String... args) {
Movie torasan = new Movie("Es ist schwer für einen Mann, Torajiro Sunset, kleine Verbrennung", new G());
Movie titan = new Movie("Fortschrittlicher Riesenangriff auf Titan", new PG12());
Movie jingi = new Movie("Kampf ohne Gerechtigkeit", new R15());
User shinnosuke = new User("Shinnosuke Nohara", 5);
System.out.println(shinnosuke.name());
shinnosuke.play(torasan);
shinnosuke.play(titan);
shinnosuke.play(jingi);
System.out.println();
User taro = new User("Taro", 12);
System.out.println(taro.name());
taro.play(torasan);
taro.play(titan);
taro.play(jingi);
System.out.println();
User hanako = new User("Hanako", 17);
System.out.println(hanako.name());
hanako.play(torasan);
hanako.play(titan);
hanako.play(jingi);
System.out.println();
}
}
Abhängig vom Alter jedes Benutzers werden Filme, die in der Altersgrenze gefangen sind, zwangsweise gestoppt.
Shinnosuke Nohara Der Mann ist schmerzhaft, Torajiro spielt den Sonnenuntergang klein brennen. Spielen Sie den Marschgiganten ATTACK ON TITAN. \ >>> Kann aufgrund eines Altersbeschränkungsfehlers nicht gespielt werden. Stoppen Sie den Marschgiganten ATTACK ON TITAN. Spiele einen Kampf ohne Gerechtigkeit. \ >>> Kann aufgrund eines Altersbeschränkungsfehlers nicht gespielt werden. Stoppen Sie den Kampf ohne Gerechtigkeit.
Taro Der Mann ist schmerzhaft, Torajiro spielt den Sonnenuntergang klein brennen. Spielen Sie den Marschgiganten ATTACK ON TITAN. Spiele einen Kampf ohne Gerechtigkeit. \ >>> Kann aufgrund eines Altersbeschränkungsfehlers nicht gespielt werden. Stoppen Sie den Kampf ohne Gerechtigkeit.
Hanako Der Mann ist schmerzhaft, Torajiro spielt den Sonnenuntergang klein brennen. Spielen Sie den Marschgiganten ATTACK ON TITAN. Spiele einen Kampf ohne Gerechtigkeit.
In der Praxis sind Spezifikationsänderungen häufig. Hier nehmen wir eine Situation an, in der "zusätzliche Anforderungen für den Umgang mit R18-Filmen aufgetreten sind".
"Ich habe mich für R18-Filme entschieden. Könnten Sie das beheben?" Wenn es Ihnen gesagt wird, sollten Sie es sofort ändern können, oder?
Wenn es sich um ein Statusmuster handelt, fügen Sie die R18-Klasse hinzu, und Sie sind fertig. Hier und da muss nicht nach dem Prozess zur Beurteilung der Altersgrenze (if-Aussage) gesucht und korrigiert werden.
class R18
R18.java
package state.rating;
public class R18 implements RatingSystem {
@Override
public boolean checkLimit(int age) {
if(18 <= age)
return true;
return false;
}
}
Main.java
package state.rating;
public class Main {
public static void main(String... args) {
Movie torasan = new Movie("Es ist schwer für einen Mann, Torajiro Sunset, kleine Verbrennung", new G());
Movie titan = new Movie("Fortschrittlicher Riesenangriff auf Titan", new PG12());
Movie jingi = new Movie("Kampf ohne Gerechtigkeit", new R15());
Movie devil = new Movie("Das giftige Monster des Teufels", new R18()); //* Zusätzliche Bemerkungen
User shinnosuke = new User("Shinnosuke Nohara", 5);
System.out.println(shinnosuke.name());
shinnosuke.play(torasan);
shinnosuke.play(titan);
shinnosuke.play(jingi);
shinnosuke.play(devil); //* Zusätzliche Bemerkungen
System.out.println();
User taro = new User("Taro", 12);
System.out.println(taro.name());
taro.play(torasan);
taro.play(titan);
taro.play(jingi);
taro.play(devil); //* Zusätzliche Bemerkungen
System.out.println();
User hanako = new User("Hanako", 17);
System.out.println(hanako.name());
hanako.play(torasan);
hanako.play(titan);
hanako.play(jingi);
hanako.play(devil); //* Zusätzliche Bemerkungen
System.out.println();
//* Zusätzliche Bemerkungen
User isekai = new User("Universitätsstudent in einer anderen Welt wiedergeboren", 18);
System.out.println(isekai.name());
isekai.play(torasan);
isekai.play(titan);
isekai.play(jingi);
isekai.play(devil);
System.out.println();
}
}
Unter den oben genannten Benutzern ist derjenige, der den R18-Film (Devil's Poisonous Monster) sehen kann Nur "Studenten, die in einer anderen Welt wiedergeboren wurden", die 18 Jahre alt sind.
Shinnosuke Nohara Der Mann ist schmerzhaft, Torajiro spielt den Sonnenuntergang klein brennen. Spielen Sie den Marschgiganten ATTACK ON TITAN. \ >>> Kann aufgrund eines Altersbeschränkungsfehlers nicht gespielt werden. Stoppen Sie den Marschgiganten ATTACK ON TITAN. Spiele einen Kampf ohne Gerechtigkeit. \ >>> Kann aufgrund eines Altersbeschränkungsfehlers nicht gespielt werden. Stoppen Sie den Kampf ohne Gerechtigkeit. Spiele das giftige Monster des Teufels. \ >>> Kann aufgrund eines Altersbeschränkungsfehlers nicht gespielt werden. Stoppen Sie das giftige Monster des Teufels.
Taro Der Mann ist schmerzhaft, Torajiro spielt den Sonnenuntergang klein brennen. Spielen Sie den Marschgiganten ATTACK ON TITAN. Spiele einen Kampf ohne Gerechtigkeit. \ >>> Kann aufgrund eines Altersbeschränkungsfehlers nicht gespielt werden. Stoppen Sie den Kampf ohne Gerechtigkeit. Spiele das giftige Monster des Teufels. \ >>> Kann aufgrund eines Altersbeschränkungsfehlers nicht gespielt werden. Stoppen Sie das giftige Monster des Teufels.
Hanako Der Mann ist schmerzhaft, Torajiro spielt den Sonnenuntergang klein brennen. Spielen Sie den Marschgiganten ATTACK ON TITAN. Spiele einen Kampf ohne Gerechtigkeit. Spiele das giftige Monster des Teufels. \ >>> Kann aufgrund eines Altersbeschränkungsfehlers nicht gespielt werden. Stoppen Sie das giftige Monster des Teufels.
Universitätsstudent in einer anderen Welt wiedergeboren Der Mann ist schmerzhaft, Torajiro spielt den Sonnenuntergang klein brennen. Spielen Sie den Marschgiganten ATTACK ON TITAN. Spiele einen Kampf ohne Gerechtigkeit. Spiele das giftige Monster des Teufels.
・ Beurteilung und Funktionen basierend auf dem Status können auf eine bestimmte Klasse beschränkt werden. (Implementierungslokalisierung) -Es ist relativ einfach, Spezifikationen hinzuzufügen oder zu ändern. (Leicht zu ändern)
Recommended Posts