设计模式第一篇

原创 2004年03月03日 11:44:00

设计模式第一篇<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

杨恒贤(yanghx@70345.com)

 

简介:

       本文介绍了一种经常用的设计模式------工厂模式. 并且通过Eclipse里面的UML介绍怎么设计类工厂.

(关于设计模式中的主要设计模式,我会一一介绍在Java(工具Eclipse)里面的使用,全部原创.)

 

现在的COM,COM+广泛使用了设计模式中的工厂模式 ,当你深入学习Java后会发现其实在Java使用工厂模式会使程序更容易调试.

下面我们来具体介绍一下怎么使用工厂模式来简化自己的开发.

1.       什么是工厂模式

简单的说工厂模式就是相当于Java中的new的功能. 他按实际生活中的现象来构架的. 一个商品一定是在一个工厂里面产生的. 应用于编程中就变成了,一个对象必须是由一个对象工厂产生的.

典型的UML如下:

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />CSDN_Dev_Image_2004-3-31049520.png

 

2.       为什么工厂模式是如此常用

因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑实用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。

工厂模式

 

3.       基本构架

程序框架如下:

一般工厂模式的是利用工厂类静态函数来产生操作实现的接口对象 所以说工厂类有一个静态函数,被产生的对象有一个接口.

典型类图:

CSDN_Dev_Image_2004-3-31049522.png

 

4.       使用范围

当遇到下面的情况时,开发人员可以考虑采用工厂模式:

1.       在编码时不能预见需要创建哪一种类的实例。

2.       一个类使用它的子类来创建对象。

3.       开发人员不希望创建了哪个类的实例以及如何创建实例的信息暴露给外部程序。

4.       基类可以是一个抽象类,在这种情况下,工厂类必须返回一个非抽象类。

5.       基类提供了一些缺省方法,只有当这些缺省方法不能满足特殊需求的情况下才在子类中重写这些方法。

6.       可以直接通过传递给工厂类的参数决定应该返回哪一个子类的实例。

 

 

 

下面我们结合Eclipse中的UML工具来展示使用过程.

 

我们以数据库操作类的设计为例:

现在一个Eclipse可以使用的UML Plug-in. 典型的由EclipseUML , TogetherEC .

 

数据库操作功能要求:

1.       适应不同的数据库

2.       适应相同数据库的不同连接

3.       处理与数据库相关的异常

 

我们用工厂类

首先,设计数据库操作的功能函数

package com.jp.nissan.dealer.practice.db;

 

import java.sql.*;

import java.util.List;

 

public interface IBaseDatabase {

  /**

   * 不支持存储过程的操作

   */

   Connection getConnection() throws Exception;

   void disConnect();

   void runSQL(String strSQL)throws SQLException;

   void runSQL(String strSQL,List values) throws SQLException;

   ResultSet openSQL(String strSQL) throws SQLException;

   ResultSet openSQL(String strSQL,List values)throws SQLException;

  }

为了支持不同数据库,我们定制一个工厂类:

package com.jp.nissan.dealer.practice.db;

 

import javax.naming.NamingException;

 

import java.sql.SQLException;

 

public class DBFactory {

  public static IBaseDatabase createDB(){

    try {

      IBaseDatabase db = new TestDB2Database();

      return db;

    }

    catch (NamingException ex) {

      return null;

    }

    catch (SQLException ex) {

      return null;

    }

    catch(Exception e){

      return null;

    }

 

  }

}

开始在UML图上设计

CSDN_Dev_Image_2004-3-31049520.png

然后让UML工具产生代码,你会发现很多框架性代码已经成功产生.

 

开始编写你的具体数据库操作. 使用Java类的继承性,这样既达到低的耦合型,又达到高的重用型.

 

最后:

 关于数据库实现代码,可以发信跟我要.

谢谢.                                                    2004-2-18

[置顶] 国内首部Java多线程设计模式原创作品《Java多线程编程实战指南(设计模式篇)》已出版

国内首部Java多线程设计模式原创作品《Java多线程编程实战指南(设计模式篇)》已由电子工业出版社出版。本书从理论到实战,用生活化的实例和通俗易懂的语言全面介绍Java多线程编程的"三十六计"——多...
  • viscent_huang
  • viscent_huang
  • 2015年11月18日 11:21
  • 4337

java语言程序设计基础篇第十一章编程练习题

1package yongheng; import java.util.Scanner;public class Main { public static void main(String a...
  • gyhguoge01234
  • gyhguoge01234
  • 2016年09月08日 22:19
  • 2208

Java语言程序设计基础篇第十版第一章编程练习题答案

Java语言程序设计基础篇第十版第一章编程练习题答案详解
  • Tanganling
  • Tanganling
  • 2016年10月20日 15:43
  • 2207

设计模式之装饰器(第一篇)

设计模式这一块一直在我心头放着,每每闲暇之时都会想起我得去系统的了解一下,并且写一些文章记录学习的过程,算是一本《设计过程学习笔记》吧。 设计模式还有6个原则: 里氏替换, 接口最小化 ,最小知道 ,...
  • maple980326
  • maple980326
  • 2016年11月15日 16:38
  • 150

笑谈设计模式(第一篇)

都说软件世界是现实世界的抽象,现实世界的事物都可以用软件来反应。在软件世界中,有一套解决通用问题的方法,高大上的讲法是:设计模式。 说起设计模式,懂得软件的人,都会肃然起敬,因为它在这个行业一直是...
  • Aric_Chen
  • Aric_Chen
  • 2015年04月04日 11:12
  • 1190

谈谈javascript中设计模式第一篇

最近看了一本《Javascript设计模式与开发实践》;这本书写的很不错,书中举的例子也很通俗易懂。一早就想抽点时间写写的从中的感悟,好像也拖了好久了,什么课程设计呀,考试啦。今天终于静下来了。 首先...
  • baidu_24024601
  • baidu_24024601
  • 2016年06月01日 23:36
  • 582

第一篇 理解PHP设计模式

ps:以下内容均为《PHP设计模式》的阅读笔记,只做了概括,想了解详情可以去查看此书。谢谢阅读哈。 一、OOP的思想 1、抽象类(abstract) (1)抽象指示一个对象的基本特征,使...
  • qq_31159377
  • qq_31159377
  • 2017年10月31日 21:28
  • 37

java设计模式个人总结(第一篇)

java设计模式可将其分为三种类型:创建型、结构型、行为型。 创建型有:    工厂模式(Factory)单例模式(singleton)Builder模式(生成器模式)原型模式(Prototype...
  • ruizhenggang
  • ruizhenggang
  • 2017年11月30日 22:20
  • 20

表现与数据分离第一篇:mvc设计模式实现pdf数据流弹窗预览

吼吼吼: 喊出程序员的心声,远离jsp,前后端分离!!!!!! 1、常用的js开发模式,尤其是jquery开发模式,一般都是重复累赘的书写,毫无维护性和可读性而言,例如 要是有一天id变了,需求变...
  • Take_Dream_as_Horse
  • Take_Dream_as_Horse
  • 2017年12月06日 14:04
  • 95

IOS设计模式第一篇之MVC

设计模式的好处:我们可以写出容易理解,重用度很高的代码。降低代码的耦合度,符合软件工程的思想。 设计模式主要分为三类:创造型的:单例和抽象工厂。结构类型的: MVC  Decorator,...
  • sammyieveo
  • sammyieveo
  • 2014年12月13日 15:52
  • 405
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式第一篇
举报原因:
原因补充:

(最多只允许输入30个字)