当前位置:  编程技术>软件工程/软件设计
本页文章导读:
    ▪【Design Pattern】Builder模式的一种实现      应用场景 如果需要根据多个不同的参数来创建某类的不同对象,很常见的方法是定义多个构造器以供不同场合下的调用。但有一种更好的构造方法,我们可以使用Builder模式来实现(前提是多.........
    ▪.Net三层架构      一.概念 三层体系结构,是在客户端与数据库之间加上了一个“中间层”,也叫组件层。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅.........
    ▪Servlet配置和ServletFilter配置      一、Servlet的配置包含在web.xml文件中,主要通过以下两步进行设置。 (1)声明Servlet对象 <servlet>    <servlet-name>Servlet的名称</servlet-name>   <servlet-class>指定Servlet对象.........

[1]【Design Pattern】Builder模式的一种实现
    来源: 互联网  发布时间: 2013-11-19

应用场景

如果需要根据多个不同的参数来创建某类的不同对象,很常见的方法是定义多个构造器以供不同场合下的调用。但有一种更好的构造方法,我们可以使用Builder模式来实现(前提是多个构造参数)。

示例(汽车类及其Builder构造器)
public class Car {
private final int seet;
private final String engine;
private final int dormer;
private final int speed;
private final int color;

public static class Builder{
private int seet;
private String engine;

// Optional parameters
private int dormer;
private int speed;
private int color;

public Builder(int seet, String engine){
this.seet = seet;
this.engine = engine;
}

public Builder dormer(int val){
this.dormer = val;
return this;
}

public Builder speed(int val){
this.speed = val;
return this;
}

public Builder color(int val){
this.color = val;
return this;
}

public Car build(){
return new Car(this);
}
};

private Car(Builder builder){
this.seet = builder.seet;
this.engine = builder.engine;
this.dormer = builder.dormer;
this.speed = builder.speed;
this.color = builder.color;
}
}

演示制造汽车过程(不同的汽车需要不同的部件):
public class Main {

public static void main(String[] args) {
Car car1 = new Car.Builder(4, "power").dormer(1).speed(1000).color(255).build();
Car car2 = new Car.Builder(2, "awesome").speed(2000).color(122).build();
}
}
这样自由组合的不停的build,是不是有点酷?

延伸
为实现更好的伸缩性,Builder类可独立出来,并且继承于某个Builder接口。另外,从上例可以看出,Builder重定义了一遍Car类的属性,其实现是需要消耗一定的性能的;所以当可选参数较少时,并不建议使用这样的Builder模式。






作者:moxiaomomo 发表于2013-5-18 15:10:29 原文链接
阅读:6 评论:0 查看评论

    
[2].Net三层架构
    来源: 互联网  发布时间: 2013-11-19
一.概念

三层体系结构,是在客户端与数据库之间加上了一个“中间层”,也叫组件层。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,是源自并优化了经典体系模式MVC模式的产物,即使这三个层放置到一台机器上。三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交互换。

二.组成 1、界面表示层(USL):

主要是指与用户交互的界面,用于显示数据和接收用户输入的数据,将用户输入的数据传递给业务逻辑层,一般不包含任何实际的业务处理,当业务逻辑的数据发生变化时,表示层就会显示出更新的结果。表示层提供应用程序的用户界面,通常为Windows应用程序或web应用程序。

2、业务逻辑层(BLL):

是表示层和数据访问层之间的桥梁,它代表应用程序的核心功能,负责处理数据层的数据,实现业务逻辑。业务逻辑层通常为类库。

3、数据访问层(DAL):

主要实现对数据的保存和读取操作,将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库中。数据访问层可以访问关系数据库、文本文件或者XML文档,通常为类库。

三.模型理解

三层结构开发的软件系统和饭店经营的模式类似

 

1、表示层就像饭店的服务员,直接和客户打交道,提供软件系统与用户交互的接口;

2、业务逻辑层是表示层和数据访问层之间的桥梁,负责数据处理和传递,就像饭店里的厨师,负责把采购回来的材料加工完成,传递给服务员;

3、数据访问层只负责数据的存取工作,就像饭店的采购,系统里有什么数据取决于数据访问层的工作,就像饭店能够提供什么样的饭菜首先取决于采购购买的材料。

四.作用

1、安全性高。用户端只能通过逻辑层访问数据层,减少了入口点,把很多危险的系统功能都给屏蔽了;

2、扩展性强。不同层负责不同的层面,如PetShop可经过简单的配置实现Sqlserver和Oracle之间的转换;

3、项目结构清楚,分工明确,有利于呼气的维护和升级;

4、可以很容易的用新的实现来替换原有层次的实现;

5、开发人员可以只关注整个结构中的其中某一层;

6、可以降低曾与层之间的依赖。使耦合度降低;

7、有利于各层逻辑的复用;

8、有利于标准化

五.劣势

1、降低了系统的性能:如果不采用分层结构,很多业务可以直接造访数据库,一次获取相应的数据,如今必须通过中间层完成;

2、有时候导致级联的修改。这种修改预期体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分成式结构,可能需要在相应的业务逻辑成和数据访问层中都增加相应的代码;

3、执行速度不够快。当然这个“执行速度”是相对与非分层的应用程序来说的

因此。“三层结构”开发不适用对执行速度要求过于苛刻的系统,如:在线订票,在线支付等。它比较擅长商业股则容易变化的程序。

4、增加了代码量,增加了工作量。

六.构建

下面我们就采用C#语言构建三层的框架:

1、表示层:

文件→新建项目→VisualC# →Windows窗体应用程序

                             

 

2、业务逻辑层:

文件→添加项目→VisualC#→类库

 

3、数据访问层:

文件→添加项目→VisualC#→类库

      

4、添加实体

文件→添加→新建项目→VisualC#→类库

5、添加表示层引用:

选中LoginUI项目→右键选择“添加引用”→“LoginBll”项目和“LoginModle”项目

 

6、添加业务逻辑层引用:

选中LoginBll项目→右键选择“添加引用”→“LoginModel”项目和“LoginDAL”项目

 

7、添加数据访问层引用:

选中LoginDAL项目→右键选择“添加引用”→“LoginModel”项目

 

 

把各项目之间的引用关系建立好以后,一个完整的解决方案就算是拾建好基石了。

七.总结

不要因为某个层对你来说没用,或者实现起来特别简单,就认为它没有必要,或者摒弃它,或者挪作它用。只要进行了分层,不管是几层,每一层都要有明确的目的和功能实现,而不要被实际过程所左右,造成同一类文件位于不同层的情况发生。也不要出现同一层实现了不同的功能的情况发生。

 

 

作者:lvshihua 发表于2013-5-19 16:13:45 原文链接
阅读:0 评论:0 查看评论

    
[3]Servlet配置和ServletFilter配置
    来源: 互联网  发布时间: 2013-11-19

一、Servlet的配置包含在web.xml文件中,主要通过以下两步进行设置。

(1)声明Servlet对象

<servlet>

   <servlet-name>Servlet的名称</servlet-name>

  <servlet-class>指定Servlet对象的完整对象</servlet-class>

</servlet>

(2)映射Servlet

<servlet-mapping>

  <servlet-name>Servlet的名称</servlet-name>

  <url-pattern>映射访问URL</url-pattern>

</servlet-mapping>

注:两处的Servlet可以任意取但必须保持一致

二、Servlet过滤器配置

(1)声明ServletFilter对象

<filter>

       <filter-name>过滤器的名称</filter-name>

     <filter-class>过滤器的完整类名</filter-class>

</filter>

(2)过滤器映射

<filter-mapping>

     <filter-name>过滤器名称</filter-name>

    <url-pattern>过滤器映射</url-pattern>

</filter-mapping>

注:两处的过滤器名称t可以任意取但必须保持一致
作者:zc707212993 发表于2013-5-19 22:27:43 原文链接
阅读:0 评论:0 查看评论

    
最新技术文章:
▪主-主数据库系统架构    ▪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
▪OSGi:生命周期层    ▪Javascript/Jquery——简单定时器    ▪java代码 发送GET、POST请求
▪Entity Framework底层操作封装(3)    ▪HttpClient 发送GET、POST请求    ▪使用spring框架,应用启动时,加载数据
▪Linux下Apache网站目录读写权限的设置    ▪单键模式的C++描述    ▪学习ORM框架—hibernate(一):初识hibernate
 


站内导航:


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

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

浙ICP备11055608号-3