模板方法模式
文章目录
模板方法的定义是:定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
简单来说,就是定义好一个算法的骨架,算法的具体实现由子类去实现。在这个算法中,不变的是算法的结构,变化的是算法的具体实现。
该模式中存在两种角色:
- 抽象类。提供算法的框架和部分方法的默认实现。
- 具体类。重写抽象类的方法。
classDiagram
class AbstractClass{
+ defaultMethod()
}
class ConcreteClass
ConcreteClass --> AbstractClass : 实现
代码实现 骨架:Network 类:
public abstract class Network {
String username;
String password;
public boolean post(String message){
if(logIn(this.username,this.password)){
return sendData(message);
}
return false;
}
abstract boolean logIn(String username,String password);
abstract boolean sendData(String data);
}
具体实现子类:
public class Twitter extends Network{
public Twitter(String userName, String password) {
this.username=userName;
this.password=password;
}
@Override
boolean logIn(String username, String password) {
return true;
}
@Override
boolean sendData(String data) {
System.out.println("twitter:"+data);
return true;
}
}
客户端:
public class NetworkDemo {
public static void main(String[] args) {
Network network=new Twitter("username","password");
network.post("this is message");
}
}
模板方法属于简单且容易理解的设计模式。优点是抽象类会提供算法的默认实现,子类只需重写部分实现就行。缺点是当算法发生改变时,需要修改全部的实现类。
文章作者 梧桐碎梦
上次更新 2023-05-13 12:52:27