欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

设计模式之规格模式

程序员文章站 2022-05-02 11:26:38
规格模式 规格模式 使用了策略模式,组合模式. 只不过将模式具体化了 规格模式将 与或非 操作进行了封装, 实现了类似 SQL查询语句的操作. 类图如下: 其中的角色如下: 抽象规格书代码: 组合规格书代码: 与或非规格书代码: 业务规格书: 场景类: 规格模式已经是一个非常具体的应用框架了, 遇到 ......

规格模式

规格模式 使用了策略模式,组合模式. 只不过将模式具体化了

规格模式将 与或非 操作进行了封装, 实现了类似 sql查询语句的操作.

类图如下:

设计模式之规格模式

 

其中的角色如下:

  1. ispecification 抽象规格书: 对规格书的抽象定义
  2. compositespecification 组合规格书: 抽象类, 对规格书进行 与或非 操作, 实现 and,or,not 方法, 在方法中关联子类, 因为子类为固定类,故而父类可以进行关联
  3. andspecification 与规格书: 对规格书进行与操作, 实现 issatisfiedby 方法
  4. orspecification 或规格书
  5. notspecification 非规格书
  6. bizspecification 业务规格书: 实现 issatisfiedby 方法, 对业务进行判断, 一个类为一种判断方式, 可进行扩展

抽象规格书代码:

设计模式之规格模式

 

组合规格书代码:

设计模式之规格模式

 

与或非规格书代码:

设计模式之规格模式

 

设计模式之规格模式

 

设计模式之规格模式

 

业务规格书:

设计模式之规格模式

 

场景类:

设计模式之规格模式

 


规格模式已经是一个非常具体的应用框架了, 遇到类似多个对象中筛选查找, 或者业务规则不适于放在任何已有实体或值对象中, 而且规则的变化和组合会掩盖那些领域对象的基本含义, 或者是想自己编写一个类似linq的语言工具的时候就可以照搬这部分代码, 只要实现自己的逻辑规格书即可


 

 

可以关注一下鄙人的公众号, 谢谢各位了!设计模式之规格模式