Je passe en revue le livre Head First Design Pattern
, et le premier modèle de conception que j'ai rencontré était Strategy Design Pattern. Je l'ai trouvé assez facile à comprendre et à mettre en œuvre, mais en mettant en œuvre je suis confronté à un problème que je ne sais pas comment pouvons-nous appeler un «Constructeur paramétré de la classe comportementale».Modèle de conception de stratégie: Constructeur d'appel de la classe comportementale
Un aperçu du livre:
Ici, je parle de comment appeler le constructeur de FlyWithWings, Quack etc
classes.
Je donne un exemple de modèle de conception de stratégies pour le comprendre dans une meilleure façon:
//Strategy Interface
public interface CompressionStrategy {
public void compressFiles(ArrayList<File> files);
}
public class ZipCompressionStrategy implements CompressionStrategy {
public void compressFiles(ArrayList<File> files) {
//using ZIP approach
}
}
public class RarCompressionStrategy implements CompressionStrategy {
public void compressFiles(ArrayList<File> files) {
//using RAR approach
}
}
public class CompressionContext {
private CompressionStrategy strategy;
//this can be set at runtime by the application preferences
public void setCompressionStrategy(CompressionStrategy strategy) {
this.strategy = strategy;
}
//use the strategy
public void createArchive(ArrayList<File> files) {
strategy.compressFiles(files);
}
}
public class Client {
public static void main(String[] args) {
CompressionContext ctx = new CompressionContext();
//we could assume context is already set by preferences
ctx.setCompressionStrategy(new ZipCompressionStrategy());
//get a list of files...
ctx.createArchive(fileList);
}
}
Ainsi, dans l'exemple ci-dessus RarCompressionStrategy
et ZipCompressionStrategy
sont la classe de comportement. Alors peut-il être possible de déclencher leur classe constructeur paramétrée de ces classes comportementales de CompressionContext
classe?
Je ne suis pas voir un seul constructeur paramétrés. –
@LucianovanderVeekens C'est juste un exemple, je demande si nous avons un constructeur paramétré alors comment peut-il être appelé? – arqam
'ctx.setCompressionStrategy (new ZipCompressionStrategy (someImaginaryParam));' – Fildor