在一次会议中,老板说:"......把精力放在设计上和需求上,编码这种东西随便拉个民工培训几天都能做......".会后,大家暗地里纷纷声讨老板指责他。下班后我想想老板的话,觉得很有道理。编写代码固然重要有时还很有意思,也不乏高手为之奋斗终身,一段代码就能看得出一个人是不是一个合格的程序员......代码多么重要啊,但是对于一个软件而言,需求分析、架构、设计才是整个项目成败的关键,凌驾于软件之上俯瞰全局、运筹帷幄不是更好吗?!。我把博客的分类命名为“设计”,就是希望自己能向这方面发展,愿所有的朋友一起进步。
摘要:介绍: 在软件系统中,我们有时候需要对对象的功能进行扩展,继承虽然能够解决此类问题,但是由于继承本身的一些缺点使得扩展不能动态的进行,并且面对功能扩展间的组合,使用继承会使得子类急剧膨胀。装饰模式正是用来解决这类问题的,对对象功能进行任意的扩展而不用担心类继承所带来的膨胀。现实中的例子: “疯狂坦克”,我想大家都玩过吧,每一关中都会随机爆出一些可吃的东西,譬如防护罩:坦克吃了,增强抗打能力;譬如子弹:坦克吃了,发射子弹的速度快了;譬如石墙:坦克吃了可以打碎石墙……解决方案: 如果叫我实现这些功能(防护罩:坦克吃了,增强抗打能力;譬如子弹:坦克吃了,发射子弹的速度快了;譬如石墙:坦克吃了可以打碎
阅读全文
摘要:一、引言自己也算是使用Singleton的老客户了,也明白如何写代码能最大限度的避免多线程产生多个实例。但是自己却很少遇到在多线程下使用Singleton,所以自己也是一知半解。今天正好有空,搞搞清楚这个问题。二、问题的产生请看如下代码:public class Animal { private static Animal instance = null; private Animal() { } public static Animal getInstance() { if (instance == null) { instance = new Animal(); } return inst
阅读全文
摘要:所谓依赖倒置原则(Dependence Inversion Principle)就是要依赖于抽象,不要依赖于具体。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。
阅读全文
摘要:1、概述 在软件系统中,有时候面临的产品类是动态变化的,而且这个产品类具有一定的等级结构。这时如果用工厂模式,则与产品类等级结构平行的工厂方法类也要随着这种变化而变化,显然不大合适。那么如何封装这种动态的变化?从而使依赖于这些易变对象的客户程序不随着产品类变化? 2、意图 原型模式是通过现有的一个对象,复制出更多的此类型的对象以供使用。 3、结构图 图解说明 UsePrototype类是用户类也...
阅读全文