Analyse de trois cas pratiques de modèle d'usine Java
Le modèle d'usine est un modèle de conception couramment utilisé, qui peut séparer la création et l'utilisation d'objets, rendant le programme plus évolutif. En Java, il existe trois cas pratiques courants de modèle d'usine : le modèle d'usine simple, le modèle de méthode d'usine et le modèle d'usine abstrait. Cet article analysera ces trois cas pratiques en détail et fournira des exemples de code spécifiques.
Simple Factory Pattern est le modèle d'usine le plus basique, qui crée des objets via une classe d'usine. Dans le modèle d'usine simple, le client n'a besoin d'interagir qu'avec la classe d'usine et n'a pas besoin d'interagir directement avec la classe de produit spécifique.
Ce qui suit prend comme exemple la création d'un objet graphique pour montrer la pratique du modèle d'usine simple :
// Créer une interface graphique
interface publique Shape {
void draw();
}
// Créer une classe graphique spécifique
public class Circle implémente Shape {
@Override public void draw() { System.out.println("画一个圆形"); }
}
classe publique Rectangle implémente Shape {
@Override public void draw() { System.out.println("画一个矩形"); }
}
// Créer une classe d'usine
classe publique ShapeFactory {
public static Shape createShape(String type) { switch (type) { case "circle": return new Circle(); case "rectangle": return new Rectangle(); default: throw new IllegalArgumentException("不支持的图形类型"); } }
}
// Exemple d'utilisation du client
classe publique Client {
public static void main(String[] args) { Shape circle = ShapeFactory.createShape("circle"); circle.draw(); Shape rectangle = ShapeFactory.createShape("rectangle"); rectangle.draw(); }
}
Dans le code ci-dessus, un objet graphique spécifique est créé via la méthode createShape de la classe d'usine ShapeFactory. Il suffit au client d'appeler cette méthode et de transmettre les paramètres correspondants pour obtenir l'objet graphique correspondant et effectuer les opérations ultérieures.
Factory Method Pattern est un modèle d'usine légèrement plus complexe dans le Factory Method Pattern, chaque classe de produit spécifique correspond à une classe d'usine. Le client crée des objets produit spécifiques en interagissant avec la classe d'usine correspondante.
Ce qui suit prend la création d'un objet voiture comme exemple pour démontrer la pratique du modèle de méthode d'usine :
// Créer une interface de voiture
interface publique Car {
void drive();
}
// Créer une classe de voiture spécifique
public class BenzCar implémente Car {
@Override public void drive() { System.out.println("开奔驰车"); }
}
classe publique BmwCar implémente Car {
@Override public void drive() { System.out.println("开宝马车"); }
}
// Créer une interface d'usine
interface publique CarFactory {
Car createCar();
}
// Créer une classe d'usine spécifique
classe publique BenzCarFactory implémente CarFactory {
@Override public Car createCar() { return new BenzCar(); }
}
classe publique BmwCarFactory implémente CarFactory {
@Override public Car createCar() { return new BmwCar(); }
}
// Exemple d'utilisation du client
classe publique Client {
public static void main(String[] args) { CarFactory benzFactory = new BenzCarFactory(); Car benzCar = benzFactory.createCar(); benzCar.drive(); CarFactory bmwFactory = new BmwCarFactory(); Car bmwCar = bmwFactory.createCar(); bmwCar.drive(); }
}
Dans le code ci-dessus, il est créé via l'interface d'usine CarFactory et Son objet de voiture spécifique de classe d'usine spécifique correspondant. Le client n'a qu'à interagir avec la classe d'usine correspondante pour obtenir l'objet voiture correspondant et effectuer les opérations ultérieures.
Le modèle d'usine abstrait est le modèle d'usine le plus complexe, chaque classe d'usine spécifique peut créer plusieurs objets de produit de différents types. Le client crée une série d'objets produits associés en interagissant avec la classe d'usine.
Ce qui suit prend comme exemple la création d'un objet de téléphone mobile pour démontrer la pratique du modèle d'usine abstrait :
// Créer une interface de téléphone mobile
interface publique Téléphone {
void call();
}
// Créer un objet spécifique classe de téléphone mobile
classe publique ApplePhone implémente Phone {
@Override public void call() { System.out.println("使用苹果手机打电话"); }
}
classe publique HuaweiPhone implémente Phone {
@Override public void call() { System.out.println("使用华为手机打电话"); }
}
// Créer une interface d'usine
interface publique PhoneFactory {
Phone createPhone();
}
// Créer une interface spécifique factory class
public class ApplePhoneFactory implémente PhoneFactory {
@Override public Phone createPhone() { return new ApplePhone(); }
}
public class HuaweiPhoneFactory implémente PhoneFactory {
@Override public Phone createPhone() { return new HuaweiPhone(); }
}
// Exemple d'utilisation du client
public class Client {
public static void main(String[] args) { PhoneFactory appleFactory = new ApplePhoneFactory(); Phone applePhone = appleFactory.createPhone(); applePhone.call(); PhoneFactory huaweiFactory = new HuaweiPhoneFactory(); Phone huaweiPhone = huaweiFactory.createPhone(); huaweiPhone.call(); }
}
Dans le code ci-dessus, c'est créé via l'interface d'usine PhoneFactory et ses objets de téléphone mobile spécifiques de classe d'usine spécifique correspondants. Le client n'a qu'à interagir avec la classe d'usine correspondante pour obtenir l'objet téléphone mobile correspondant et effectuer les opérations ultérieures.
Résumé :
Ce qui précède présente trois cas pratiques du modèle d'usine : le modèle d'usine simple, le modèle de méthode d'usine et le modèle d'usine abstrait. Ces trois modes peuvent séparer efficacement la création et l'utilisation d'objets et améliorer l'évolutivité du programme. En développement réel, vous pouvez choisir le mode usine approprié à utiliser en fonction de besoins spécifiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!