(1)在对象之间分散责任一直是面向对象分析和设计的一个难点。
(2)对于可重用功能,特别是组合,对象边界并不总是最佳的抽象和封装边界 。
(3)面向特性程序设计解决穿透多个类的问题 ,需要按特性打包。特性被溶入传统面向对象程序中,考虑一组类。类层次结构面向主题的程序设计,将面向对象的应用系统看作是类层次结构的融合或合成,每个应用系统都嵌有相同领域对象的视图点。视图程序设计把类看作是视图的时变聚合,其中每个视图都是当前领域对象的通用函数模板。面向主题程序设计,是 使其成为产品的三种方法中最老的一个,IBM公司的C++工具集和原型支持,都可以用于Java(HyperJ)。面向特性程序设计已经可以用Java(AspectJ)实现,并免费使用。
摘自:《基于重用的软件工程---技术、组织、和控制》 Hafedh Mili/Ali Mili/Sherif Yacoub/Edward Addy 著 韩柯 译