- 浏览: 31624 次
- 性别:
- 来自: 上海
最新评论
文章列表
价值取决于付出,体现在你付出的同时也在感染着别人。
因为你的付出,让大家感觉到快乐。
因为大家的快乐,所以你的存在是有价值的。
你付出的越多,感染的人也就越多,你在大家心中的价值也就越大。
可能你会因为付出而失去很多时间和汗水,而你得到的却是最深层次的快乐和尊重。
因为付出,你可能会多了一些责任,更多了一份担当,而正是因为这份责任与担当,可能正在默默地为你创造着一个又一个机遇。所以,
当我们在抱怨机遇难得的时候,请考虑考虑自己曾经付出了多少;
当机会一个个与我们失之交臂的时候,请考虑考虑自己又付出了多少。
付出不一定会成功,那是因为影响成功的因素很多很多。但付出一定会有收获,也一 ...
两个比较稳定的maven mirror
- 博客分类:
- 分析设计
两个比较稳定的maven mirror
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
...
面向对象的软件分析设计过程备忘
- 博客分类:
- 分析设计
面向对象的软件分析设计过程备忘
一、业务分析与需求收集
1、重点梳理主业务流程,逐步完善分支流程。整理和发现业务流程中的涉众以及他们的业务目标和系统目标,显式目标以及隐式目标;
2、整理涉众们在系 ...
设计模式之状态模式(State)
- 博客分类:
- 模式
状态模式:允许对象在内部状态改变时改变它的行为。
状态模式UML图:
将所有状态的行为(handle方法)抽象到State接口中,不同的状态处理这里接口行为时,有不同的实现。Context会将行为委托给当前的状态对象,具体的状态实现类可以自行设置成功或者失败后的状态。
如果有多个Context实例需要共享State,可将Context中的State设为静态变量。
虽然状态模式的类图与策略模式的类图几乎一样,但是他们本身的意图是不同的,形似神不似。
如果多种状态以一种相对固定的方式转移切换,不使用State模式也无妨,因为State模式会引入大量的状态子类 ...
设计模式之组合模式(Composite)
- 博客分类:
- 模式
组合模式:允许你将对象组合成树状结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及组合对象
组合模式UML图:
组合模式的一种常见的特征就是内部有一个集合,集合当中保存着一系列的自身接口的引用。这样就可以在组合对象中任意新增新的组合对象,最终表现为一种树形结构形态。
组合模式通常和迭代器模式一起使用,来遍历某个节点下所有的子节点。
下面是一个菜单的例子
首先我们总揽一下该例子程序的类图结构:
事例场景:某餐厅的菜单(OursMenu)包含了中餐菜单(ZhongCanMenu)和西餐菜单(XiCanMenu)两类子菜单,其中ZhongC ...
设计模式之迭代器模式(Iterator)
- 博客分类:
- 模式
迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示
迭代器模式能让我游走于聚合内的每一个元素,而又不暴露其内部的表示。把游走的任务放在迭代器上,而不是聚合上。这样简化了聚合的接口和实现,也让责任各得其所。
迭代器模式UML图:
当然,这里我们的迭代器接口是自己定义的迭代器接口,我们完全可以使用JDK自带的java.util.Iterator接口。
由于JDK支持迭代器模式,并且在他的集合框架中,大部分集合都已经实现了迭代器的创建,让该模式变得更加简单,因此,也给我们省下了不少力气来学习和使用迭代器模式。
但是,迭代器模式下依然有值 ...
如何初始化Eclipse
- 博客分类:
- 研发管理
打开Eclipse安装目录下的configuration文件夹,删除当中的所有目录,只保留config.ini文件和org.eclipse.equinox.simpleconfigurator目录(如果你的Eclipse有这个目录的话),重启Eclipse
links方式安装Eclipse插件
- 博客分类:
- 研发管理
安装步骤:
在Eclipse安装目录下创建一个links目录;
在links目录下创建link文件——只要是文本文件就好;
在新创建的link文件中写好插件的路径,如:path=d:/eclipse-plugins/MyPlugin
插件所在目录结构和插件在Eclipse中的目录结构一样,例如Maven插件解压以后的结构为“MavenPlugin/eclipse/…”,link文件中path的路径指向“MavenPlugin”所在目录即可,即path=d:/eclipse-plugins/MavenPlugin
打开eclipse安装目录下的eclipse.ini文件,在第一 ...
设计模式之模板方法(Template Method)
- 博客分类:
- 模式
模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
模板方法模式UML图:
为了防止模板方法被覆盖,通常将模板方法定义为final方法。
对模板方法进行挂钩(钩子方法)
钩子是一种被声明在父类中的方法,通常在模板方法中被调用,但父类中通常只会给出空的或者默认的实现。钩子的存在,可以让子类有能力对算法的不同点进行挂钩。如果子类需要干涉模板方法中的一些行为,可以实现或者覆盖父类中定义好的钩子方法。
模板方法模式和策略模式都能封装算法,不过一个是使用继承,一个是使用组合 ...
适配器模式:将一个类或接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。
适配器模式UML图:
适配器模式使用对象组合,包装被适配者:这种做法还有另外一个优点,被适配者的任何子类,都可以搭配着适配器使用。该模式可以通过创建适配器进行接口转换,让不兼容的接口变成兼容,可以让客户从实现的接口解耦。
外观模式:提供一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让调用方只依赖于高层的外观接口,而不需要关注外观接口背后的细节。
外观模式UML图:
设计原则之迪米特原则:只与你直接的朋友通信,不要跟陌生人说话,每一个软 ...
命令模式:将“请求/命令”封装成对象,无需了解这个请求的执行者以及处理细节。
谁来执行和处理这个命令对于命令的发号者来说并不关心,发号命令者只管发号施令而不关注执行者以及执行细节,而命令的执行者只管执行命令而不关注命令是由谁来发号的。命令模式能将发号施令者与命令的执行者解耦。他们只需要关注于命令对象。命令模式可能会产生额外的很多的子类,给系统增加复杂性。
命令模式UML图:
命令模式时序图:
根据单一职责的设计原则,通常我们会把一个命令(do something)封装为一个Command对象,有时我们也会一个命令的一组行为(such as:do something ...
单例模式:确保一个类只有一个实例,并提供一个全局访问点。
要想保证一个类只有一个实例,我们不能将构造方法暴露出去,否则调用方就可能通过你提供的构造方法去实例化该类的实例,这样我们就无法保证该类只有一个实例了。因此,我们不能给类的构造方法赋予public的访问权限。
单例模式的实例化分为两种:急切实例化和延迟实例化
急切实例化:依赖JVM在加载这个类时马上创建此唯一的单件实例,通常表现为一个静态引用。如果程序总是创建并使用单件实例,或者在创建和运行时方面的负担不太繁重,我们可以采取急切实例化的方式创建单件。
public class Product {
/ ...
操作系统的多任务
有两种实现多任务的方法,这取决于操作系统在中断程序时的行为——直接中断而不需要事先和被中断的程序协商,还是只有在被中断程序同意交出控制权之后才能执行中断。前者称为抢占式多任务,后者称 ...
简单工厂:简单工厂其实不是一个设计模式,反而比较像是一种编程习惯。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。
简单工厂UML图
简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。
工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.通过使用工厂类,外界可以从直接创建具体产品对
象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。而不必管这些对象究竟如何创建及如何组织的.明确了各自的职责和权利,有利于整个软件 ...
数字提供了标量贮存和直接访问。它是不可更改类型,也就是说变更数字的值会生成新的
对象。当然,这个过程无论对程序员还是对用户都是透明的。
Python 支持多种数字类型:整型、长整型、布尔型、双精度浮点型、十进 ...