** Table des matières ** Un modèle qui crée des objets en regroupant et en clonant des pièces.
Clarifiez le type d'objet à créer à l'aide de l'instance de prototype et créez un nouvel objet en le copiant.
-Prototype Classe abstraite qui duplique -ConcretePrototype Une classe concrète qui duplique -Client client qui demande la réplication
Nous mettrons en œuvre l'usine prototype nécessaire à la production de voitures en série.
Montez d'abord les pièces fabriquées par l'usine de prototypes.
** Classe de moteur **
Engine.kt
package prototype
class Engine(displacement: Int): Cloneable {
var displacement = displacement
fun show() {
print("【moteur】"+ displacement +"cc ")
}
public override fun clone(): Any {
return super.clone()
}
}
** Classe de pneu **
Tire.kt
package prototype
class Tire(num: Int): Cloneable {
var num = num
fun show() {
print("【pneu】" + num + "Pièces")
}
public override fun clone(): Any {
return super.clone()
}
}
Ce qui précède sont les parties. Montez ensuite la voiture du produit.
** Classe de voiture **
Car.kt
package prototype
class Car(engine: Engine, tire: Tire) {
val engine = engine
val tire = tire
fun show() {
print("[Produit] Voiture")
engine.show()
tire.show()
print("\n")
}
}
Nous allons mettre en place une usine capable de produire en masse le moteur et le pneu mis en œuvre jusqu'à présent.
Interface de prototype
ProtoType.kt
package prototype
/**
*Prototype
* Prototype
*/
interface ProtoType {
fun createEngine(): Engine
fun createTire(): Tire
}
Classe d'usine prototype
ProtoTypeFactory.kt
package prototype
class ProtoTypeFactory: ProtoType {
var engine = Engine(0)
var tire = Tire(4)
override fun createEngine(): Engine {
return engine.clone() as Engine
}
override fun createTire(): Tire {
return tire.clone() as Tire
}
}
Enfin, nous mettrons en place une usine qui reçoit des pièces de l'usine de prototypes et fabrique en masse les produits.
Classe d'usine de fabrication de voitures
Factory.kt
package prototype
class Factory {
var carList:MutableList<Car> = mutableListOf()
var prototypeFactory = ProtoTypeFactory()
init {
//Réglez le volume d'échappement à 1000cc
prototypeFactory.engine.displacement = 1000
//Production en série de 3 voitures avec une cylindrée de 1000 cm3
massProduction(3)
//Réglez le volume d'échappement à 2000cc
prototypeFactory.engine.displacement = 2000
//Production en série de deux voitures de 2000 cm3
massProduction(2)
//Réglez le volume d'échappement à 12000cc
prototypeFactory.engine.displacement = 12000
//Set 8 pneus
prototypeFactory.tire.num = 8
//Un bus qui produit en série 5 voitures avec des pneus de 12000 cm3 et 8 pneus?
massProduction(5)
for (car in carList) {
car.show()
}
}
private fun massProduction(num: Int) {
for (i in 0..num) {
carList.add(Car(prototypeFactory.createEngine(), prototypeFactory.createTire()))
}
}
}
Avec ce qui précède, nous avons installé une usine qui peut produire en série des prototypes les uns après les autres. Contrairement au modèle [Abstract Factory](# abstract-factory), même si vous souhaitez produire en masse divers modèles, vous pouvez changer les membres des parties de la classe ProtoTypeFactory
sans implémenter une nouvelle fabrique. J'ai fini.
[output]
[Produit] Voiture [Moteur] 1000cc [Pneu] 4 pièces
[Produit] Voiture [Moteur] 1000cc [Pneu] 4 pièces
[Produit] Voiture [Moteur] 1000cc [Pneu] 4 pièces
[Produit] Voiture [Moteur] 1000cc [Pneu] 4 pièces
[Produit] Voiture [Moteur] 2000cc [Pneu] 4 pièces
[Produit] Voiture [Moteur] 2000cc [Pneu] 4 pièces
[Produit] Voiture [Moteur] 2000cc [Pneu] 4 pièces
[Produit] Voiture [Moteur] 12000cc [Pneu] 8 pièces
[Produit] Voiture [Moteur] 12000cc [Pneu] 8 pièces
[Produit] Voiture [Moteur] 12000cc [Pneu] 8 pièces
[Produit] Voiture [Moteur] 12000cc [Pneu] 8 pièces
[Produit] Voiture [Moteur] 12000cc [Pneu] 8 pièces
[Produit] Voiture [Moteur] 12000cc [Pneu] 8 pièces
Recommended Posts