设计
liudows
这个作者很懒,什么都没留下…
展开
-
软件工程搞笑图
转载 2006-03-23 19:09:00 · 957 阅读 · 0 评论 -
多个特性不同时如何设计继承体系结构
问题 用面向对象的方法建模描述一个小型的动物世界。这个缩微的动物世界中,有下列成员:老鹰,会飞翔的肉食动物;狮子,行走的肉食动物;麻雀,会飞的草食动物;牛,会走的草食动物。 要求 建立可以统一描述所有动物的模型,使得用户使用该模型时可以忽略动物的具体类型。 方案一 飞翔、行走、吃草、吃肉都是动物的能力或者行为,而行为可以用接口来描述。于是非常strai原创 2012-05-10 22:42:05 · 3017 阅读 · 8 评论 -
设计模式解析笔记—为什么需要工厂
为什么需要工厂? 有两大原因:一是将创建者和使用者解耦,二是提高内聚度。 概念上相似的对象从使用的视角来看,可以以同样的方式处理。然而,创建对象时,负责创建的实体通常需要了解创建的是哪个具体对象,以及何时创建这个而非那个对象。OO告诉我们,让客户对象在概念层次上使用其他对象是最有用的,这意味着设计要遵循开闭原则、依赖倒置原则和Liskov替换原则。要实现这些原则,客户对象就不应知道它原创 2012-05-30 13:27:39 · 790 阅读 · 3 评论 -
设计模式解析笔记 - OO核心概念
虽说是笔记,但是我添油加醋地放了很多自己的理解进去。 按惯例,讲OO之前都要把面向过程批判一番。就像讲面向过程之前都一定要把goto批判一番一样。 面向过程反应了人们对问题的自然思考方式,也就是第一步怎么做,第二步怎么做......像我这样从Basic、Pascal、C一路走来的古董人物,从一开始接触编程就接受的是结构化设计、功能分解、自顶向下这些面向过程的基本方法原创 2012-03-25 23:52:34 · 626 阅读 · 0 评论 -
设计模式解析笔记—Double-Checked Locking Pattern
引入问题 Singleton模式已经很熟悉了,但是以前一直没有注意到singleton的一个严重问题:在多线程环境下,singleton可能不再single。具体来说,在singleton模式中,假设对getInstance的两个调用几乎同时发生,可能会出现如下情况: 1、线程一检查实例变量是否为null。发现实例还未创建,于是执行创建实例的代码部分。 2、在线程一的实例化代码执行完毕原创 2012-05-29 16:48:35 · 339 阅读 · 0 评论 -
设计模式解析笔记—Object Pool Pattern
有时,我们需要创建大量占用一定资源(不仅是内存)的对象,这些对象的创建过程一般比较耗时(因为创建过程也就是资源申请过程)。为了提高效率,最好是预先申请一定数量的这类对象,需要时分配出去,用完后也不释放,留着重用。“设计模式解析”中,对这种方法进行了系统阐述,并归纳为对象池模式(Object Pool Pattern)。对象池模式已经得到了广泛运用,最多的莫过于线程池、数据库连接池和tcp连接池了,原创 2012-05-29 15:05:16 · 381 阅读 · 0 评论 -
设计模式解析笔记-OO传统观念拓展
关于对象 传统观点: 数据和方法的集合。这是从对象实现的角度来看,层次比较低,不应该在分析设计阶段应用。 新观点: 对象是具有责任的实体。这是从概念角度来看,层次较高,它让我们关注对象“做什么”,而不是“怎么做”,避免过早操心实现细节,从而增强软件结构的灵活性。适合在分析设计阶段使用。 关于封装 传统观点: 数据隐藏。 新观原创 2012-05-09 17:12:45 · 480 阅读 · 0 评论 -
保护界面设计
基类保护界面是指基类通过protected开放给派生类的方法和属性。程序设计中,经常将希望对派生类可见,而对外部不可见的部分放到保护界面中。 在《C++程序设计语言》中,明确指出“不要声明protected数据成员”。 Protected成员对外部不可见,说明不是类接口的一部分。但是对派生类可见,说明其真实用意是为派生类实现对外接口(即public成员)提供支持,比如派生类可以调用基类p原创 2012-03-23 14:13:13 · 354 阅读 · 0 评论 -
Best Practices for Exception Handling
http://onjava.com/pub/a/onjava/2003/11/19/exceptions.html One of the problems with exception handling is knowing when and how to use it. In this article, I will cover some of the best practices for转载 2012-04-19 22:37:02 · 232 阅读 · 0 评论 -
java异常机制和异常处理原则
本文从Java异常最基本的概念、语法开始讲述了Java异常处理的基本知识,分析了Java异常体系结构,对比Spring的异常处理框 架,阐述了异常处理的基本原则。并且作者提出了自己处理一个大型应用系统异常的思想,并通过设计一个异常处理的框架来论述此思想。 一、 异常的概念和Java异常体系结构 异常是程序运行过程中出现的错误。本文主要讲授的是Java语言的异常处理。Java语言的异常处转载 2012-04-20 13:09:07 · 491 阅读 · 0 评论 -
犯过的CS架构设计错误
CS是一种经典的架构模式。目前也已经做过一些CS的项目了,但是最近才发现之前在完成气象水文数据库项目时,犯下了设计上的大错误。 气象水文数据库描述如下: 1、从卫星收下来的气象水文数据保存到数据库中。 2、客户端通过访问数据库可以浏览、修改、搜索气象水文数据。 功能比较简单,也很明确。 具体实现上,我采取了如下思路: 1、在服务器上安装oracle数据库。 2原创 2012-04-19 22:33:18 · 568 阅读 · 0 评论 -
不是抽象类的基类不是好基类
开宗明义:不是抽象类的基类不是好基类。为什么这么说? 基类和派生类的关系有如下几种: 基类可以是具体类、虚类和抽象类三种,对派生类没有要求。其中具体类是没有虚函数的类,其所有方法都提供了具体实现;派生类方法如果和基类方法同名,则派生类方法隐藏(overwrite)了基类方法。虚类是包含虚函数的类,所有方法都提供具体实现;派生类如果要提供不同于基类虚方法的实现,则在派生类中提供同名原创 2012-03-23 13:01:59 · 1022 阅读 · 2 评论 -
webservice入门疑惑
作为一个webservice的newbie,我有很多疑惑。因为毕竟当我把惯常的那套OO思路搬到webservice时,发现有点使不上劲。 没有多少资料,在网上胡搜了半天,发现大家的解释是这样的:websevice是stateless的。 有以下基本观点: 1、webservice类是无状态的。无状态就意味着类中的数据成员不起作用。为什么不起作用可以从第二点得到解释。 2、每当客户端原创 2012-04-08 11:34:19 · 268 阅读 · 0 评论 -
pthread_cond_t解决生产者-消费者问题
1. pthread条件变量使用范式 pthread_cond_t在解决同步问题时非常有用,但是由于线程同步问题的复杂性,pthread_cont_t的使用也有一定技巧。 1.1. 模型1 在多线程竞争临界资源时,用pthread_cond_wait和pthread_cond_signal机制。典型做法是,在使用资源的线程里,判断资源是否可用;如果不可用,原创 2013-02-06 20:54:44 · 564 阅读 · 0 评论