Java---设计模式app小软件汇总应用(1)

简介: Java---设计模式app小软件汇总应用

写了一个app小软件,重点不在于软件,软件bug挺多,也没去修改。

这个小软件只是为了更好的说明和了解设计模块而做的。

Java 程序设计–包结构

Java程序设计的系统体系结构很大一部分都体现在包结构上

大家看看我的这个小软件的分层:

image.png


结构还是挺清楚的。

一种典型的Java应用程序的包结构:

前缀.应用或项目的名称.模块组合.模块内部的技术实现

说明:

1、前缀:是网站域名的倒写,去掉www(如,Sun公司(非JDK级别)的东西:com.sun.* )。

2、其中模块组合又由系统、子系统、模块、组件等构成(具体情况根据项目的大小而定,如果项目很大,那么就多分几层。

3、模块内部的技术实现一般由:表现层、逻辑层、数据层等构成。

对于许多类都要使用的公共模块或公共类,可以再独立建立一个包,取名common或base,把这些公共类都放在其中。

对于功能上的公用模块或公共类可建立util或tool包,放入其中。

如本例的util包。


设计与实现的常用方式、DAO的基本功能

★ 设计的时候:从大到小

先把一个大问题分解成一系列的小问题。或者说是把一个大系统分解成多个小系统,小系统再继续进行往下分解,直到分解到自己能够掌控时,再进行动手实现。


★ 实现的时候:从小到大

先实现组件,进行测试通过了,再把几个组件实现合成模块,进行测试通过,然后继续往上扩大。


★ 最典型的DAO接口通常具有的功能

新增功能、修改功能、删除功能、按照主要的键值进行查询、获取所有值的功能、按照条件进行查询的功能。

image.png


★ 一个通用DAO接口模板


★ UserVO 和 UserQueryVO的区别

UserVO封装数据记录,而UserQueryVO用于封装查询条件。



image.png

下面的为那个小软件实现这些设计模式的简单汇总:

(含分层思想,值对象,工厂方法,Dao组件,面向接口编程)


main方法类:

UserClient :

package cn.hncu.app;
import cn.hncu.app.ui.UserAddPanel;
public class UserClient extends javax.swing.JFrame {
    public UserClient(){
        super("chx");
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setBounds(100, 100, 800, 600);
        this.setContentPane(new UserAddPanel(this));
        this.setVisible(true);
    }
    public static void main(String[] args) {
        new UserClient();
    }
}


公用模块类 utils类:

FileIO :

package cn.hncu.app.utils;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
public class FileIO {
    public static Object[] read(String fileName){
        List<Object> list = new ArrayList<Object>();
        ObjectInputStream objIn=null;
        try {
            objIn = new ObjectInputStream(new FileInputStream(fileName));
            Object obj;
            //※※对象流的读不能用available()来判断,而应该用异常来确定是否读到结束
            while(true){
                obj=objIn.readObject();
                list.add(obj);  
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            //读到文件末尾,就是出异常,通过这来判断是否读到结束。
            //因此,本程序中,这里是正常的文件读取结束,不是我们之前认为的出异常--所以不输出异常信息
        } catch (ClassNotFoundException e) {
            //读到文件末尾,就是出异常,通过这来判断是否读到结束。
            //因此,本程序中,这里是正常的文件读取结束,不是我们之前认为的出异常--所以不输出异常信息
        }finally{
            if(objIn!=null){
                try {
                    objIn.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        Object[] objs = list.toArray();
        if(objs==null){
            objs=new Object[0];
        }
        return objs;
    }
    public static boolean write(String fileName,Object obj){
        ObjectOutputStream objOut =null;
        try {
            objOut=new ObjectOutputStream(new FileOutputStream(fileName,true));
            //new FileOutputStream(fileName,true),有true的存在代表是添加而不是覆盖
            objOut.writeObject(obj);
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }finally{
            if(objOut!=null){
                try {
                    objOut.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return true;
    }
}
目录
相关文章
|
19天前
|
人工智能 安全 Java
Java和Python在企业中的应用情况
Java和Python在企业中的应用情况
45 7
|
28天前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
112 3
|
14天前
|
缓存 Java 开发者
Java多线程并发编程:同步机制与实践应用
本文深入探讨Java多线程中的同步机制,分析了多线程并发带来的数据不一致等问题,详细介绍了`synchronized`关键字、`ReentrantLock`显式锁及`ReentrantReadWriteLock`读写锁的应用,结合代码示例展示了如何有效解决竞态条件,提升程序性能与稳定性。
42 5
|
12天前
|
监控 Java 数据库连接
Java线程管理:守护线程与用户线程的区分与应用
在Java多线程编程中,线程可以分为守护线程(Daemon Thread)和用户线程(User Thread)。这两种线程在行为和用途上有着明显的区别,了解它们的差异对于编写高效、稳定的并发程序至关重要。
22 2
|
1月前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
基于开源框架Spring AI Alibaba快速构建Java应用
|
22天前
|
安全 Java 开发者
Java 多线程并发控制:深入理解与实战应用
《Java多线程并发控制:深入理解与实战应用》一书详细解析了Java多线程编程的核心概念、并发控制技术及其实战技巧,适合Java开发者深入学习和实践参考。
43 6
|
18天前
|
关系型数据库 MySQL Java
MySQL索引优化与Java应用实践
【11月更文挑战第25天】在大数据量和高并发的业务场景下,MySQL数据库的索引优化是提升查询性能的关键。本文将深入探讨MySQL索引的多种类型、优化策略及其在Java应用中的实践,通过历史背景、业务场景、底层原理的介绍,并结合Java示例代码,帮助Java架构师更好地理解并应用这些技术。
22 2
|
19天前
|
设计模式 前端开发 JavaScript
JavaScript设计模式及其在实战中的应用,涵盖单例、工厂、观察者、装饰器和策略模式
本文深入探讨了JavaScript设计模式及其在实战中的应用,涵盖单例、工厂、观察者、装饰器和策略模式,结合电商网站案例,展示了设计模式如何提升代码的可维护性、扩展性和可读性,强调了其在前端开发中的重要性。
24 2
|
20天前
|
移动开发 小程序
仿青藤之恋社交交友软件系统源码 即时通讯 聊天 微信小程序 App H5三端通用
仿青藤之恋社交交友软件系统源码 即时通讯 聊天 微信小程序 App H5三端通用
47 3
|
21天前
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####