注重原则和智慧结晶——读《浮现式设计》有感

        题记:正在读《浮现式设计:专业软件开发的演进本质》(荣获第19届Jolt生产力大奖)一书,顺手写下了一点自己的感想与浅见,是以为记。

 

        使用与创建分离原则是我以前没有接触的,说起来很易于理解,即分离对象的创建和使用职责,在一个系统中,限制任意实体A与任意实体B之间的关系,A可以创建B,或者A可以使用B,但A不能既创建又使用B。通过这样的分离,使得创建和使用被独立开了,如果创建方式发生变化,那么不会影响到使用方;如果使用方式发生变化,也不会影响到创建过程。

        比如有如下的类:


        任务管理器通过任务调试器来完成一些事情,二者是独立的,有各自的生命周期,如果如图中所示来编码,则会让任务管理器承担任务调试器的生命周期维护工作,同时也让任务管理器与具体的任务调度器类型增加耦合,没有充分发挥面向对象的多态特性。

        如果改成:

Void doSomething(TaskScheduler scheduler){
    Scheduler.shcedule();
}

        则一方面任务管理器不用增加额外的对调度器的管理职责,另一方面也与具体的调度器类型进行了解耦,从而不关心调度器的创建过程,是一种创建与使用分离原则的体现。

        那么创建工作去哪了呢,当然我们有很多的方式可以解决对象创建的问题,工厂模式也好,静态方法也好,创建的职责集中在一起,也可以利于条件创建或从外部属性动态决定创建类型。

        不过我想,这个原则不应该到处都用,毕竟一个软件中有太多如上图所示的用法了,如果都这样进行创建与使用分离,会引入非常多的工厂类或工厂方法,反而会把代码结构搞得更复杂。其实根本上来说,是否采用这种方式,还是取决于这样做所能带来的价值。设计人员要对创建的可变性进行一些分析和设计工作,如果创建是不可变的,那就不用舍近求远了,原则是指导,但什么时候要应用,还是取决于应用后能否带来更大的价值。

        对于开闭原则,依赖倒置原则以及Gof提出的面向接口设计、优先使用组合而非继承等原则,有太多的书籍在说,就不再重复了。

        总之,原则和智慧能带给我们很多帮助,在总体上给予指导,但最终还是要看实践,要在具体的环境中做出取舍和平衡。


——欢迎转载,请注明出处 http://blog.csdn.net/caowenbin ——

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文斌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值