我知道在面向對象設計中有一些基本的原則,什麼單一責任原則,依賴倒置原則等,我都能理解,但這個變化隔離的原則不太明白
因為我總是遇到一些要做報表的系統,而報表卻總是經常變,最普遍的情況是,報表的列會增加或減少,報表查詢的條件會有變化等
如果我是用實體類來保存報表的數據結構的話,那麼這個實體類就會經常變
同時,前端顯示報表的頁面也會跟著變
同時,如果查詢條件有改變的話,數據訪問層也要變
也就是說 表示層 業務邏輯層 數據訪問層 還有實體類都會變
那又如何能說是隔離了變化呢?
還是我在設計時就錯了,遇到這種前端頁面經常會有改變的系統應該要怎樣隔離變化
------解决方案--------------------------------------------------------
建議試下配置文件~~~
------解决方案--------------------------------------------------------
首先不可能隔离所有的变化,只能尽量隔离出已识别出的和可预计的变化,看来你还没有很好的理解抽象,呵呵
其实就你的例子,使用依赖倒置原则就已经差不多可以解决了
有一个报表类,包含了很多字段类和条件类,报表类使用实体类
页面类将表现方法定义一个接口,传递给报表类,由报表类在页面上输出
一个报表类厂用于创建不同的报表
这样的对象模型已经可以应付你所说的简单的变化情况了
如果要进一步去耦,则报表类可以通过从配置文件中读取配置来生成,这样修改配置文件就可以修改报表了,IoC就是干这个活的,呵呵