概念
操作类也成业务操作类,生成的对象为业务对象。这些类是通过业务操作规则、步骤、业务处理逻辑抽象而得出的类。这些类在现实世界是不存在的,而是需要在相同操作进行提炼而产生的,这些类的设计与提炼,需要非常熟悉面向对象设计原则和各种软件设计模式,是面向对象程序设计中难点和重点。如:mybatis中SqlSessionFactoryBuilder就是根据业务规则抽象出来的一个用于创建一个SqlSessionFactory的类。又如:分析商城结算中各种促销活动,可以抽象出费用计算程序类。
示例代码
如:游戏中备份和恢复,使用单一职责原则,设计一个GameRole(用于记录每一个时刻游戏特征参数的类)、Caretaker用于完成备份数据的存储和读取,这两个类都是根据业务逻辑设计出来的操作类。
public class GameRole {
//生命力
private int vitality;
//攻击力
private int attack;
//防御力
private int defense;
public void getInitState() {
this.vitality=100;
this.attack=100;
this.defense=100;
}
public void fight() {
this.vitality=vitality-10;
this.attack=attack-20;
this.defense=defense-10;
}
public RoleStateMemento saveState() {
return new RoleStateMemento(vitality,attack,defense);
}
public void recoverState(RoleStateMemento memento) {
this.vitality=memento.getVitality();
this.attack=memento.getAttack();
this.defense=memento.getDefense();
}
}
public class Caretaker {
private RoleStateMemento memento;
public RoleStateMemento retrieveMemento(){
//读取磁盘文件,并将磁盘对象读取的数据赋给memento,并将memento对象返回
return this.memento;
}
public void saveMemento(RoleStateMemento memento){
//将对象memento记录的信息,持久化存储
}
}
其中:RoleStateMemento为记录游戏当前特征值的实体类(DTO)
拓展
在软件分层结构中主要位于Services层,软件设计模式主要使用对象。