0
我正在阅读Head First Design Pattern
这本书,而我遇到的第一个设计模式是策略设计模式。我发现它很容易理解和实现,但在实现时,我面临着一个问题,我不知道我们怎么称之为“行为类的参数化构造器”。策略设计模式:行为类的调用构造函数
从书上的快照:
我在这里谈论如何调用FlyWithWings, Quack etc
类的构造函数。
我会给Strategy设计模式的一个例子来理解它在一个更好的办法:
//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);
}
}
所以在上面的例子中RarCompressionStrategy
和ZipCompressionStrategy
是行为类。那么是否可以从CompressionContext
类中触发这些行为类的参数化构造类?
我没有看到一个参数的构造函数。 –
@LucianovanderVeekens这只是一个例子,我问我们是否有参数化的构造函数,然后如何调用它? – arqam
'ctx.setCompressionStrategy(new ZipCompressionStrategy(someImaginaryParam));' – Fildor