抽象类应用—模板方法模式
模板方法模式(Templete Method):定义一个操作中的算法的骨架,而将一些可变部分的实现延迟到子类中。模版方法模式使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定的步骤。
/**
模板方法模式
(Templete Method):定义一个操作中的算法的骨架,而将一些可变部分的实现延迟到子类中。
模版方法模式使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定的步骤。
*/
public class Test7{
public static void main(String[] args){
UserManager um = new UserManager();
um.action("test","add");
}
}
abstract class BaseManager{
public void action(String name,String method){
if("admin".equals(name)){
execute(method);
}else{
System.out.println("你没有操作权限,请联系管理员");
}
}
public abstract void execute(String method);
}
class UserManager extends BaseManager{
public void execute(String method){
//用户是否登录的验证
//验证成功后才可以执行以下操作
if("add".equals(method)){
System.out.println("执行了添加操作");
}else if("del".equals(method)){
System.out.println("执行了删除操作");
}
}
}
class ClassManager{
}
接口应用—策略模式
把可变的行为抽象出来,这样的好处是这些行为可以在真正使用时相互替换
然后在使用的时候绑定接口
策略模式(Strategy Pattern),定义了一系列的算法,将每一种算法封装起来并可以相互替换使用,策略模式让算法独立于使用它的客户应用而独立变化。
OO设计原则:
1、面向接口编程(面向抽象编程)
2、封装变化
3、多用组合,少用继承
/**
策略模式(Strategy Pattern),定义了一系列的算法,将每一种算法封装起来并可以相互替换使用,
策略模式让算法独立于使用它的客户应用而独立变化。
把可变的行为抽象出来,这样的好处是这些行为可以在真正使用时相互替换
*/
public class Test8{
public static void main(String[] args){
BaseService user = new UserService();
user.setISave(new NetSave());
user.add("user");
}
}
//把可变的行为抽象出来,定义一系列的算法
interface ISave{
public void save(String data);
}
class FileSave implements ISave{
public void save(String data){
System.out.println("把数据保存到文件中..."+data);
}
}
class NetSave implements ISave{
public void save(String data){
System.out.println("把数据保存到网络上..."+data);
}
}
abstract class BaseService{
private ISave iSave;
public void setISave(ISave iSave){
this.iSave = iSave;
}
public void add(String data){
System.out.println("检查数据合法性...");
iSave.save(data);
System.out.println("数据保存完毕。");
}
}
class UserService extends BaseService{
}