昨天在一位读者对我的博客评论中,指出了我写的不合适的地方,也有一些知识我不太了解,所以今天来学设计模式之模版方法
早上刚到工位,很有干劲🙌🙌🙌
先学概念
先看概念:模板方法设计模式是一种行为设计模式,它允许我们创建一个方法框架,并将实现的一些步骤推迟到子类中
说人话😭:就是我们想要创建一个东西,我们先定义一个抽象类,里面包含了一个模版方法和一些抽象方法,这个模版方法是通用的,然后子类来继承抽象类,覆盖抽象方法,来达到不同的模版实现,有点绕,但是看例子很简单
这种设计模式在Java中的应用非常广泛,例如在java.io.InputStream、java.io.OutputStream、java.io.Reader和java.io.Writer等类中,以及在java.util.AbstractList、java.util.AbstractSet和java.util.AbstractMap等类中都使用了模板方法设计模式
直接实践👌
比如我们想要一个计算机时,按照上面的步骤,先写一个抽象类,里面包含了一个模版方法,这个模版方法对于所有子类应该是通用的,比如我们想要使用不同的材料构建不同的计算机,很好,先写抽象类:
csharp
// Abstract class defining the template method
public abstract class ComputerBuilder {
// Template method
public final Computer buildComputer() {
addMotherboard();
setupMotherboard();
addProcessor();
return new Computer();
}
// Abstract methods to be implemented by subclasses
public abstract void addMotherboard();
public abstract void setupMotherboard();
public abstract void addProcessor();
}
很简单,说一下😎:就是里面有一个构建计算机的模版方法,然后有几个抽象类,为了让子类有不同的覆盖
说到子类覆盖了,直接来两个子类吧:
比如子类标准计算机😊:
less
// Concrete subclass representing the process of building a standard computer
public class StandardComputerBuilder extends ComputerBuilder {
@Override
public void addMotherboard() {
// Add standard motherboard
}
@Override
public void setupMotherboard() {
// Setup standard motherboard
}
@Override
public void addProcessor() {
// Add standard processor
}
}
想要子类高端计算机!!!
less
// Concrete subclass representing the process of building a high-end computer
public class HighEndComputerBuilder extends ComputerBuilder {
@Override
public void addMotherboard() {
// Add high-end motherboard
}
@Override
public void setupMotherboard() {
// Setup high-end motherboard
}
@Override
public void addProcessor() {
// Add high-end processor
}
}
测试,我想要一个标准计算机,怎么办:
很简单,直接用😁:
ini
StandardComputerBuilder standardComputerBuilder = new StandardComputerBuilder();
Computer standardComputer = standardComputerBuilder.buildComputer();
总结
到这里就结束了,很短,很快,知识点也很简单,就是进行了一层抽象
但是是程序员必知的,哈哈哈💕💕💕