- 浏览: 92822 次
- 性别:
- 来自: 上海
最新评论
-
czwlucky:
flysnail 写道呵呵,是可以的,但是你在datagrid ...
Flex :labelFunction -
zhengshina5:
var i : int = peopleLi ...
Flex DataGrid 数据上下移动 -
flysnail:
呵呵,失误。谢谢。
对设计模式—Observer模式的认识 -
langyu:
setMeeting还是setInfo?remove方法里面的 ...
对设计模式—Observer模式的认识 -
flysnail:
呵呵,是可以的,但是你在datagrid中就不行了啊
Flex :labelFunction
文章列表
这几天,挺闲的,回过头又看了一下依赖倒置,很有意思.
依赖倒置的核心:
a 高层模块不应该依赖低层模块.二者都应该依赖于抽象.
b 抽象不应该依赖于细节.细节应该依赖于抽象.
程序中所有的依赖关系都应该终止与抽象类或者接口,则有:
1.任何变量都不应该持有一个指向具体类的指针或者引用
2.任何类都不应该从具体类派生
3.任何方法都不应该覆写它的任何基类中的已经实现了的方法
当然每个程序中都会有违反该启发原则的情况.有时候要创建具体类的实例,而创建这些实例的模块将会依赖于它们.此外,该启发原则对于那些虽是具体但却稳定的类来说似乎不太合理.如果一个具体类不会改变,并且也不会创建其他类似的派生类,那么 ...
- 2008-07-14 17:49
- 浏览 1434
- 评论(0)
通用职责分配模式(GRASP)一共有9个模式,下面是其中的3个模式:
创建者模式:
创建对象是面向对象系统中最常见的活动之一,因此应该有一些通用的原则以用于创建职责的分配,如果分配的好,设计就能够支持低耦合,提高 ...
每一个软件模块都应具有三个职责:
1.第一职责是它运行起来所完成的功能.这也是该模块得以存在的原因.
2.第二职责是它要应对变化,几乎所有的模块在它们的生命周期中变化,开发者有责任保证这种改变应该可能的简单.一个难以改变的模块是拙劣的,即使可以工作,也需要对其进行修正.
3.第三职责是要和阅读它的人进行沟通,对该模块不熟悉的开发人员应该能够比较容易的阅读并理解它.一个无法沟通的模块也是拙劣的,同样要进行修改.
当软件出现下面任何一种气味时,说明软件正在腐化
1.僵化性:很难对系统进行改动,因为每个改动都会迫使许多对系统其他部分的其他改动.
2.脆弱性:对系统的改动会导致系统中和改动的地方在概念上 ...
- 2008-06-23 16:08
- 浏览 1142
- 评论(0)
领域模型
领域模型是对领域内的概念类或现实世界中对象的可视化表示,领域模型也称为概念模型、领域对象模型和分析模型。而非软件对象的表示。
领域模型专注于特定领域,应用UML表示法,领域模型被描述为一组没有定义操作的类图,他提供了概念透视图,它可以展示:
1)领域对象或概念类
2)概念类之间的关联
3)概念类的属性
以下元素不使用于领域模型
1)软件制品
2)职责或方法
领域模型不是数据模型,所以在领域模型里,并不会排除需求中没有明确要求记录其他相关信息的类,也不会排除没有属性的概念类。例如,没有属性的概念是合法的,或者在领域内充当纯行为角色而不是信息角色的概念类也是有有效的。
创建领域模型的原因之 ...
1.将系统按照层次分解有很多的好处:1) 在无需过多了解其他层次的基.础上,可以将某一层作为一个有机整体理解.
2) 可以替换某一次的具体实现.
3) 可以将层次间的依赖性减到最低.
4) 分层有利于标准化工作.
5) 一旦构建好了某一层次,就可以用它为很多上层服务提供服务.
但其也存在一些缺陷:
1) 层次并不能封装所有东西.
2) 过多的层次会影响性能.
2.系统分三个基本层次:
表现层:表现逻辑处理用户与软件的交互,其职责是提供服务,显示信息.
领域层:做的所有领域相关的工作:包括根据输入数据或已有数据进行计算,对从表现层输入的数据进行验证,以及根据从表现层接收的命令来确定应该调度 ...
敏捷宣言:
个体和迭代,超越过程和工具
工作的软件,超越完整的文档
客户协作,超越合同谈判
响应变更,超越履行计划
敏捷原则:
1. 优先级最高的是,通过早期和持续交付有价值的软件来满足客户。
2. 欢迎变更需求,即使在开发的后期提出。敏捷过程为客户的竞争优势而控制变更。
3. 以两周到两月为周期,频繁地交付可运行的软件,首推较短的时间定量。
4. 在整个项目过程中,每一天开发人员都要和业务人员合作。
5. 由个体推动项目的建设,为个体提供所需的环境,支持和信任。
6. 在开发团队中或开发团队间传递信息的最为有效和高效的方法是面对面的交谈。
7. 衡量进展的重要尺度是可运 ...
- 2008-05-21 16:36
- 浏览 1270
- 评论(0)
1.它允许需求的变化。需求的变化和“进一步的蔓延” — 技术和客户驱动的特性的累加 — 一直是项目中导致麻烦、延期交付、令客户不满意和使开发人员泄气的主要原因。为了解决这些问题,使用迭代开发方法的团队应该在项目开发的几周里就关注生成和演示可执行的软件,这样就强制了需求的检查并可以帮助减少需求从而反映系统的本质。
2.集成不是在项目的尾声进行的"大动作"。将系统的集成留到项目的结尾几乎总是会导致耗时的返工 — 有时这种返工会花费整个项目工作量的百分之四十的时间。为了避免这种返工,每一次迭代都以集成构建系统各部分结束;这样不断的积累将最小化日后的返工。
3.早期的迭代可以暴露 ...
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:window="com.diaztorres.window.*" xmlns:log="com.log.*">
<mx:Script>
<![CDATA[
impor ...
Composite模式定义:
将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性.
Composite好处:
1.使客户端调用简单,客户端可以一致的使用组合结构或其中单个对象,用户就不必关系自己处理的是单个对象还是整个组合结构,这就简化了客户端代码。
2.更容易在组合体内加入对象部件. 客户端不必因为加入了新的对象部件而更改代码
如一棵树有树枝和叶子,树枝也有叶子,叶子为最小的部分.从大到小顺序Tree->Limb->Leaf
public abstract class Component
{
public ...
今天抽空看了一下Command 模式,Command 模式涉及了五个角色它们分别是:
客户(Client)角色:创建了一个具体命令(ConcreteCommand)对象并确定其接收者。
命令(Command)角色:声明了一个给所有具体命令类的抽象接口。这是一个抽象角色。
具体命令(ConcreteCommand)角色:定义一个接受者和行为之间的弱耦合;实现Execute()方法,负责调用接收考的相应操作。Execute()方法通常叫做执方法。
请求者(Invoker)角色:负责调用命令对象执行请求,相关的方法叫做行动方法。
接收者(Receiver)角色:负责具体实施和执行一个请求。任何 ...
Template 模式其实是在抽象类中定义业务逻辑了和方法,具体的方法在子类中去实现。
一个集团下属有几个公司,年底到了公司的财务结算的时候,最后几个下属公司把利润送到集团的财务科报帐,具体怎么财务结算的由几个下属公司去操作。
public abstract class Template
{
protected abstract void checkFinance();
public final void doTotal()
{
checkFinance();
System.out.println("C ...
Bridge将抽象和行为划分开来,各自独立,可以动态结合变换.
随着社会的发展,交通要求便利,汽车成为交通的主要工具,有车可以加汽油,也可以加柴油.
public abstract class Car
{
public CarImp carImp;
public abstract void buyOil();
pub ...
大多数Spring用户选择声明式事务管理。这是对应用代码影响最小的选择,因此也最符合非侵入式 轻量级容器的理念。
Spring的声明式事务管理是通过Spring AOP实现的,因为事务方面的代码与Spring绑定并以一种样板式风格使用,不过尽管如此,你一般并不需要理解AOP概念就可以有效地使用Spirng的声明式事务管理。
从考虑EJB CMT和Spring声明式事务管理的相似以及不同之处出发是很有益的。它们的基本方法是相似的:都可以指定事务管理到单独的方法;如果需要可以在事务上下文调用 setRollbackOnly() 方法。不同之处在于:
不像EJB CMT绑定在JTA上,Sprin ...
单纯享元模式所涉及的角色如下:
抽象享元(Flyweight)角色:此角色是所有的具体享元类的超类,为这些类规定出需要实现的公共接口。那些需要外蕴状态(External State)的操作可以通过调用商业方法以参数形式传入。
具体享元(ConcreteFlyweight)角色:实现抽象享元角色所规定的接口。如果有内蕴状态的话,必须负责为内蕴状态提供存储空间。享元对象的内蕴状态必须与对象所处的周围环境无关,从而使得享元对象可以在系统内共享的。
享元工厂(FlyweightFactory)角色:本角色负责创建和管理享元角色。本角色必须保证享元对象可以被系统适当地共享。当一个客户端对象调用一个享元 ...
今天很忙,出去吃饭都没有时间,只好把钱给同事捎带一份了
public class BuyMeal
{
private static BuyMeal buyMeal = new BuyMeal();
private static BuyMeal getInstance()
{
return buyMeal;
}
public void buyMeal()
{
System.out.println("bouilli&q ...
- 2008-04-10 17:58
- 浏览 1227
- 评论(0)