当前位置:  编程技术>软件工程/软件设计
本页文章导读:
    ▪外观模式(Facade)      @@@模式定义: 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口, 这个接口使得这一子系统更加容易使用。 @@@练习示例:  模拟一个代码生成工具,来生成一个.........
    ▪软件测试笔记      软件测试技术:   1.      软件质量:软件产品满足规定的和隐含的鱼需求能力相关的全部特征和特性。   2.      软件缺陷:是对软件产品预.........
    ▪oracle中常用的对象       表是oracle数据库最基本的对象  在oracle数据库中,存储用户数据可以使用普通表,分区表,索引表,簇表。 sql 数据库中,存储用户数据可以 DDL:   1 /*   2 建表.........

[1]外观模式(Facade)
    来源: 互联网  发布时间: 2013-11-19
@@@模式定义:
为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,
这个接口使得这一子系统更加容易使用。


@@@练习示例: 
模拟一个代码生成工具,来生成一个三层架构(表现层、逻辑层、数据层)的代码。


@@@不用模式:
coder\ConfigModel.java                [描述配置的数据Model]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
package coder;


/**
* 示意配置描述的数据Model,真实的配置数据会很多
*/
public class ConfigModel {
/**
*  是否需要生成表现层,默认是true
*/
private boolean needGenPresentation = true;


/**
*  是否需要生成逻辑层,默认是true
*/
private boolean needGenBusiness = true;


/**
*  是否需要生成DAO层,默认是true
*/
private boolean needGenDAO = true;


public boolean isNeedGenPresentation() {
return needGenPresentation;
}


public void setNeedGenPresentation(boolean needGenPrasentation) {
this.needGenPresentation = needGenPresentation;
}


public boolean isNeedGenBusiness() {
return needGenBusiness;
}


public void setNeedGenBusiness(boolean needGenBusiness) {
this.needGenBusiness = needGenBusiness;
}


public boolean isNeedGenDAO() {
return needGenDAO;
}


public void setNeedGenDAO(boolean needGenDAO) {
this.needGenDAO = needGenDAO;
}
}


coder\ConfigManager.java               [配置管理]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
package coder;


/**
* 示意配置管理,就是负责读取配置文件,
* 并把配置文件的内容设置到配置Model中去,是个单例
*/
public class ConfigManager {
private static ConfigManager manager = null;
private static ConfigModel   cm      = null;


private ConfigManager() {
   // 
}


public static ConfigManager getInstance() {
if (null == manager){
manager = new ConfigManager();
cm      = new ConfigModel();
// 读取配置文件,把值设置到ConfigModel中去,此处省略
}


return manager;
}


/**
* 获取配置的数据
* @return 配置的数据
*/
public ConfigModel getConfigData() {
return cm;
}
}


coder\Presentation.java                     [生成表现层的模块]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


package coder;


/**
* 示意生成表现层的模块
*/
public class Presentation {
public void generate() {
// 1. 从配置管理里面获取相应的配置信息
ConfigModel cm = ConfigManager.getInstance().getConfigData();
if(cm.isNeedGenPresentation()) {
// 2. 按照要求去生成相应的代码,并保存成文件
System.out.println("正在生成表现层代码文件");
}
}
}


coder\Business.java                 [生成逻辑层的模块]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


package coder;


/**
* 示意生成逻辑层的模块
*/
public class Business {
public void generate() {
// 1. 从配置管理里面获取相应的配置信息
ConfigModel cm = ConfigManager.getInstance().getConfigData();
if(cm.isNeedGenBusiness()) {
// 2. 按照要求去生成相应的代码,并保存成文件
System.out.println("正在生成逻辑层代码文件");
}
}
}


coder\DAO.java               [生成数据层的模块]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


package coder;


/**
* 示意生成数据层的模块
*/
public class DAO {
public void generate() {
// 1. 从配置管理里面获取相应的配置信息
ConfigModel cm = ConfigManager.getInstance().getConfigData();
if(cm.isNeedGenDAO()) {
// 2. 按照要求去生成相应的代码,并保存成文件
System.out.println("正在生成数据层代码文件");
}
}
}




user\Client.java          [客户端实现]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


package user;


import coder.Presentation;
import coder.Business;
import coder.DAO;


public class Client {
public static void main(String[] args) {
/*
* 现在没有配置文件,直接使用默认配置,通常情况下,三层都应该生成
* 也就是说客户端必须对这些模块都了解,才能够正确使用它们
*/
new Presentation().generate();
new Business().generate();
new DAO().generate();
}
}


@@@存在问题:
客户端为了使用生成代码的功能,需要与生成代码子系统内部的多个模块交互。违反了LKP。
导致客户端使用代码生成功能时比较复杂,并且,如果其中某个模块发生变化后可能会导致客户端也需要随着其变化。


@@@使用模式:
代码生成模块中,新增一个Facade类,其他不变。
coder\Facade.java              [模块的外观]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


package coder;


/**
* 代码生成子系统的外观类
*/
public class Facade {
/**
* 客户端需要的,一个简单的调用代码生成的功能
*/
public void generate() {
new Presentation().generate();
new Business().generate();
new DAO().generate();
}
}


user\Client.java                [客户端实现]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


package user;


import coder.Facade;


public class Client {
public static void main(String[] args) {
// 使用Facade
new Facade().generate();
}
}


此时,客户端不再需要知道代码生成模块中的各个子模块,

    
[2]软件测试笔记
    来源: 互联网  发布时间: 2013-11-19

软件测试技术:

 

1.      软件质量:软件产品满足规定的和隐含的鱼需求能力相关的全部特征和特性。

 

2.      软件缺陷:是对软件产品预期属性的偏离现象,包括检测缺陷和残留缺陷。

 

3.      软件测试:单元测试(模块测试)、集成测试、系统测试、确认测试、验收测试。

 

 

开发方测试

用户测试

第三方测试

α测试

β测试

独立测试

 

4.      软件测试模型:V模型、W模型、X模型、H模型。

 

5.      黑盒测试:边界测试、等价类测试、基于判定表的测试、因果图、正交测试、场景测试。

 

6.      白盒测试:逻辑覆盖、路径测试、数据流测试、程序插装、域测试、符号测试、程序变异测试。

 

7.      单元测试:是在软件开发过程中进行的最低级别的测试活动。包括静态代码分析(Static Code Analysis)和动态测试(Dynamic Testing)

 

8.      动态单元测试需求的一个测试环境。

a.      驱动模块(Driver):相当于测试的主程序

b.      桩模块(Stub):用于代替所测模块调用的子模块。

9.      单元测试的策略和方法:静态测试(审查、走读、评审)、单元结构测试(路径覆盖)、单元功能测试(黑盒测试)。

10.  集成测试:基于功能分解的集成、基于调用图的集成、基于路径的集成。

11.  集成测试的方法和策略:非增量型集成测试、增量型集成测试。

12.  

13.  系统测试:系统测试针对的是整个系统,关注的是整个系统的输入和输出,整个系统的稳定性。

14.  

15.  另外是基于Web系统的测试:功能测试内容和性能测试内容。

 

16.  面向对象软件的测试:OOTesting

 

17.  

 

18.  自动化测试:对代码静态和动态的分析,测试过程的录制和回放,测试脚本技术,自动化比较和虚拟用户技术。

 

19.  测试工具分类:白盒测试工具,黑盒测试工具,测试管理工具,专业测试工具。

 

20.  

 

21.  

 

22.  

 

23.   

作者:ling45480867 发表于2013-5-9 0:51:14 原文链接
阅读:0 评论:0 查看评论

    
[3]oracle中常用的对象
    来源: 互联网  发布时间: 2013-11-19
表是oracle数据库最基本的对象 
在oracle数据库中,存储用户数据可以使用普通表,分区表,索引表,簇表。
sql 数据库中,存储用户数据可以
DDL:
  1 /*
  2 建表格式
  3 create table [schema.]table_name
  4 (
  5        column_name datatype [default expr]
  6        [,……]
  7 );
  8 
*/
  9 
10 
create
table dept01
11 (
12        dno number(2),
13        name varchar2(10),
14        loc varchar2(20)default
'呼和浩特'
15 );
16 
17 
18 
insert
into dept01(dno,name)
19 
values(10,'技术处');
20 
21 
select
*
from dept01;
22 
23 
/*
24 增加列:

    
最新技术文章:
▪主-主数据库系统架构    ▪java.lang.UnsupportedClassVersionError: Bad version number i...    ▪eclipse项目出现红色叉叉解决方案
▪Play!framework 项目部署到Tomcat    ▪dedecms如何做中英文网站?    ▪Spring Batch Framework– introduction chapter(上)
▪第三章 AOP 基于@AspectJ的AOP    ▪基于插件的服务集成方式    ▪Online Coding开发模式 (通过在线配置实现一个表...
▪观察者模式(Observer)    ▪工厂模式 - 程序实现(java)    ▪几种web并行化编程实现
▪机器学习理论与实战(二)决策树    ▪Hibernate(四)——全面解析一对多关联映射    ▪我所理解的设计模式(C++实现)——解释器模...
▪利用规则引擎打造轻量级的面向服务编程模式...    ▪google blink的设计计划: Out-of-Progress iframes    ▪FS SIP呼叫的消息线程和状态机线程
▪XML FREESWITCH APPLICATION 实现    ▪Drupal 实战    ▪Blink: Chromium的新渲染引擎
▪(十四)桥接模式详解(都市异能版)    ▪你不知道的Eclipse用法:使用Allocation tracker跟...    ▪Linux内核-进程
▪你不知道的Eclipse用法:使用Metrics 测量复杂度    ▪IT行业为什么没有进度    ▪Exchange Server 2010/2013三种不同的故障转移
▪第二章 IoC Spring自动扫描和管理Bean    ▪CMMI简介    ▪目标检测(Object Detection)原理与实现(六)
▪值班总结(1)——探讨sql语句的执行机制    ▪第二章 IoC Annotation注入    ▪CentOS 6.4下安装Vagrant
▪Java NIO框架Netty1简单发送接受    ▪漫画研发之八:会吃的孩子有奶吃    ▪比较ASP和ASP.NET
▪SPRING中的CONTEXTLOADERLISTENER    ▪在Nginx下对网站进行密码保护    ▪Hibernate从入门到精通(五)一对一单向关联映...
▪.NET领域驱动设计—初尝(三:穿过迷雾走向光...    ▪linux下的块设备驱动(一)    ▪Modem项目工作总结
▪工作流--JBPM简介及开发环境搭建    ▪工作流--JBPM核心服务及表结构    ▪Eclipse:使用JDepend 进行依赖项检查
▪windows下用putty上传文件到远程Linux方法    ▪iBatis和Hibernate的5点区别    ▪基于学习的Indexing算法
▪设计模式11---设计模式之中介者模式(Mediator...    ▪带你走进EJB--JMS编程模型    ▪从抽象谈起(二):观察者模式与回调
▪设计模式09---设计模式之生成器模式(Builder)也...    ▪svn_resin_持续优化中    ▪Bitmap recycle方法与制作Bitmap的内存缓存
▪Hibernate从入门到精通(四)基本映射    ▪设计模式10---设计模式之原型模式(Prototype)    ▪Dreamer 3.0 支持json、xml、文件上传
▪Eclipse:使用PMD预先检测错误    ▪Jspx.net Framework 5.1 发布    ▪从抽象谈起(一):工厂模式与策略模式
▪Eclipse:使用CheckStyle实施编码标准    ▪【论文阅读】《Chain Replication for Supporting High T...    ▪Struts2 Path_路径问题
▪spring 配置文件详解    ▪Struts2第一个工程helloStruts极其基本配置    ▪Python学习入门基础教程(learning Python)--2 Python简...
▪maven springmvc环境配置    ▪基于SCRUM的金融软件开发项目    ▪software quality assurance 常见问题收录
▪Redis集群明细文档    ▪Dreamer 框架 比Struts2 更加灵活    ▪Maven POM入门
▪git 分支篇-----不断更新中    ▪Oracle非主键自增长    ▪php设计模式——UML类图
▪Matlab,Visio等生成的图片的字体嵌入问题解决...    ▪用Darwin和live555实现的直播框架    ▪学习ORM框架—hibernate(二):由hibernate接口谈...
▪(十)装饰器模式详解(与IO不解的情缘)    ▪无锁编程:最简单例子    ▪【虚拟化实战】网络设计之四Teaming
CSS属性参考手册 iis7站长之家
▪Entity Framework底层操作封装(3)    ▪HttpClient 发送GET、POST请求    ▪使用spring框架,应用启动时,加载数据
▪Linux下Apache网站目录读写权限的设置    ▪单键模式的C++描述    ▪学习ORM框架—hibernate(一):初识hibernate
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3