软件开发设计模式培训总结(1)

来源:互联网 发布:白金数据l先生是谁 编辑:程序博客网 时间:2024/05/20 06:23

        参加工作三年多,今天有机会参加软件开发设计的培训,讲师是oracle公司过来的,讲的还不错。

由简单的例子:认证组件和logger系统的设计入手。

1、认证组件

功能主要为:认证(对已有账户登录时的验证),存储,加密等几个功能点。

1)分析主要功能的变和不变,可以用于抽取模版方法

2)确定存储可以支持用户变化的需求,加密可以支持用户变化的需求,需要在实现中参考现有模式,如:

工厂模式,策略模式的使用。


工厂模式:需要用于构造存储和加密的具体实现,需要分别创建两个工厂来实现。当然,如果许可,可以引入策略模式。


从该例子的实际讲解还引出了:

单一职责(不以功能为区分,而是已变化点,切换归类需求);

开闭原则(对需求变化,需要在设计上能够满足对拓展开放,对修改封闭);

对接口编程,而不对实现编程;(依赖于接口,而不依赖于实现)

隔离变化;


需求总是在不断变化,而且这变化是依赖于客户,而不依赖于开发,需要以积极的态度和拥抱设计的思考来应对新需求。

良好的设计可以有效的避免新需求和功能开发所带来的进度和项目负担,也有利于项目和产品架构的复用和迁移。


2.Logger系统的实现:

需求较为复杂:

1)需要支持log基本信息,级别,线程id,时间,code中的位子

2)支持loge基本信息可以拓展

3)输出目的点可以多种

4)格式化loger信息可以多种形式

5)一个目的地支持一种Logger格式

6)一个Logger可以支持同一消息输出到多个目的地和已多种方式输出

7)支持配置文件

8)支持日志筛选过滤


一开始在在实现和讨论实现上,都没有办法很好的理解和解决上述需求,主要是无法支持只变更log基本信息,而不用更改输出格式的实现。


该例子较好的设计是采用facade 模式,以及知道最少的原则(迪米特原则)。

具体还举了前台mm的例子来牵引实现和设计。


对于该系统抽象如下:

1、过滤

2、格式化

3、输出


由Logger manager获取配置,交给Logger类,通过handler具体调用filer,格式化类,output来基本实现。


第一次写总结,内容比较零散,而且还欠缺伪代码和UML图。带后续补充。






0 0
原创粉丝点击