java和设计模式
文章平均质量分 70
钢七连软件实战技术
大型企业项目架构,多种技术实战开发,少儿编程,游戏开发
展开
-
企业项目开发的艰难过程
一个人毕业后,如果要从事五年、十年软件开发,真正的实战能力,来自企业工作中的积累、各种新问题的磨炼。企业中的实战,第一天通知见客户,第二天双方谈需求,做与不做,难易程度、规模大小、技术选型、资金人力,怎么做?挑了一个简单模块先做,做到一半,遇到了难题、新问题,怎么做?各种企业项目,都是标准的用户管理、角色权限、业务流程、业务数据管理、行为日志、消息通知、文件处理,加根据具体业务订制的特殊功能,加第三方模块。原创 2023-07-05 14:53:19 · 246 阅读 · 0 评论 -
理工科的榜样作用
100个学生,有90个是高手,剩下10个人会不会说“考试及格就好”。100个学生,有10个是高手,剩下90个人都说“考试及格就好”,于是10个高手中也会有5个不再努力,只剩5个高手。责任不在学生。90个初学者,不可能自学、看懂高级技术和项目。高级技术、项目、学习方法、学习资源,必然需要有人带领、有人传授。指导人、领路人、环境和资源,非常重要。看杭州电子科大计算机学院的新闻:“2020年浙江省大学生科技创新活动计划暨新苗人才计划项目”本科生申报书30份,研究生申报书18份。http://com原创 2020-07-31 21:36:31 · 444 阅读 · 0 评论 -
同一个程序框架的游戏:贪吃蛇
游戏功能:碰到边界、墙、铁皮、蛇身、炸弹,减少生命值。碰到墙,播放一个墙碎掉的动画。碰到食物、爱心,播放一个金币得分的动画。碰到爱心,增加生命值。碰到食物,增加蛇身。碰到边界、铁皮、蛇身,增加一个危险提示的动画。按Q, 直接增加蛇身(本身是一个调试的技术,魔兽3的快捷命令都是调试手段)。游戏素材:动画素材:游戏截图:这么多功能,需要多少行程序?可以精简、可以复杂。无论繁琐、或者精简,更加重要的一件事,是这套代码和坦克大战是同一套。同一套代码,可以制原创 2020-07-30 20:45:08 · 436 阅读 · 0 评论 -
一个大学老师的2020
苦难之年。1.毕业生和应届生毕业生到了公司,有三种问题:公司经营困难,技术更新换代,平时的业绩考核和末位淘汰。2020年,就业问题更严重。可能学生都是乐观的,考试是及格、甚至高分,软件人才需求大,未来的工作轻松、高薪。人活在美好的憧憬、幻想中。什么时候看到老师的一条消息“所有行业不缺普通人才、只缺高级人才”、“普通人才只可能低薪”。这些话就当没看见吧。理论和实践脱节,校园里的人都是一个模糊的感受、并不清楚。愿意付诸行动,提高专业技术的人,更是少数、以后也是少数。大二学生不清楚考研原创 2020-07-30 20:19:12 · 533 阅读 · 3 评论 -
[转载]工具库和设计模式的关系
良心技术帖,原文链接:https://blog.csdn.net/Ezresl/article/details/106602735教书多年,每次讲到大三的专业技术科和基础课的关系,我总会讲spring工厂模式、AOP代理模式、过滤器的责任链模式,拦截器的装饰模式(或者代理模式)。大二的《设计模式》,在工具库本身的体现、在项目功能开发上的体现,都有广泛应用。前几天,给大二学生讲java项目,创建Thread对象,传入自己编写的Runnable实现类,间接启动run线程函数。run函数里,是java游戏转载 2020-06-07 17:15:59 · 344 阅读 · 0 评论 -
学生的专业小组建设路线
先有工程类的教师指导团队,再有可以延续、迭代的学生协会和项目积累,然后培养出技术高手、做创新产品,才有张一鸣、雷军。如果没有这些工作积累,学生在期末、在高年级只能掌握增删改查。先有培养高手的氛围、环境,才有姚壮宪。一个学生,学了分支、循环,靠一个人自学、发明,就做出了《仙剑奇侠传》,这不可能。学习war3做图,也需要老师、社团里的人共同讨论、解决难点。经过长期的努力,才能做出一张好的w...原创 2020-05-05 00:04:49 · 407 阅读 · 0 评论 -
努力程度和技术成果
技术成果可以比拼,比如架构的好坏、技术难度、功能的多少。应聘者比拼技术能力,工作中比拼怎样解决产品的具体问题。要达到什么样的技术等级,这和付出多少努力是一致的。有人效率高一些,有人效率低一些,但肯定需要付出大量努力。工作单位电脑上的代码不算,只统计家里的笔记本电脑,统计两个工程文件夹,累计编程量:去掉空行后,java代码是60906行。JSP是1502行。平均每年在家里的电脑上,写...原创 2020-04-23 11:37:51 · 555 阅读 · 0 评论 -
设计模式应用教程5:下棋、悔棋、提子、放回
java版围棋程序,功能包括下棋、悔棋、提子、放回,用来讲解一个围棋战斗片段足够了。运行效果:技术方案:落子和悔棋,用一个可撤销的命令模式。提子和放回,再用一个单独的可撤销命令模式。业务逻辑不要混着写在一起,这是设计模式的好处。只要混着写,必然会有大量的数据、状态判断,耦合性大,维护困难。这个程序,分阶段、分版本,循序渐进地写成。第一个版本,是从坦克大战拆分出来的模块,画出棋盘...原创 2020-04-21 19:31:41 · 901 阅读 · 0 评论 -
设计模式应用教程4:可撤销的命令-悔棋
字符界面的运行截图:工程结构:悔棋的关键,是具体命令怎样保存、撤销下棋的参数。有两种方案:1. 用一个字符串"x,4,y,3,type,1"存放所有数据,也可以是JSON。2. 用JavaBean封装。package com_20181616666_YanYang;import java.util.ArrayList;//方案2:棋子坐标、棋子类型整合成一个类...原创 2020-04-17 08:03:26 · 554 阅读 · 0 评论 -
设计模式应用教程2:观察者模式的应用
一个观察者,观察两个主题的改进写法。让一个没有特殊父类、接口的普通类,具备被观察的功能。运行结果:主题接口和实现类:public interface Subject { public void addObserver(Observer o); public void delObserver(Observer o); public void notifyObserver(O...原创 2020-04-16 20:31:20 · 341 阅读 · 1 评论 -
软件设计与体系结构:设计过程
无论是应用软件、游戏软件,即使是直接打开编辑器,完成了全部编码,也必然经历过从用例、数据到细节的详细设计过程。这一篇博客,是用XMIND生成的markdown文件写成,确实很方便。第4章 4.1-4.44.1 UML设计过程用例:用例图 顺序图顶层架构:包图 类图界面:类图 状态图界面跳转数据模型,设计精化,类设计,构件部署4.2 用例分析与设计用例图:各个参与者,所有功能某...原创 2020-04-15 23:25:56 · 791 阅读 · 0 评论 -
设计模式应用教程3:双向适配器和instanceof的用法
假设有两个接口,又有同名函数,又有不同名的函数。做一个双向适配器:public interface ThreeElectric { public void connect(); public void f2(); public void f3(); public void f4_three();}public interface TwoElectric ...原创 2020-04-15 12:46:18 · 447 阅读 · 1 评论 -
毕业设计项目的架构
为什么要多看项目,为什么很多学生只能做到增删改查(这也不容易)。假设几个人看同一个项目开发教程,感受是不一样的:初学者:类怎样写、函数参数和返回值、分支和循环是什么意思 基础良好:Model数据部分、View界面部分、Control程序行为部分,各是什么技术方案 有良好的实践技能:体系结构是什么。分层架构,系统分为哪些子系统、构件。子系统之间是什么关系。工程体系结构举例,我不会安卓编...原创 2020-04-13 10:16:27 · 1032 阅读 · 0 评论 -
设计模式项目实战--项目功能点
设计模式的目的,是为了开发更灵活、更容易扩展、容易维护的软件。不用设计模式,也可以开发软件。设计模式,可以让小软件变成大软件,以更好的架构,做出更多的功能。当拟定项目功能点后,不必等到期末,甚至可以不动手,先讨论一下会不会做,有没有实施方案。如果有良好的实施方案,编程调试只是时间问题,问题不大。打游戏,讲究胜率,职业选手也有输的时候。专业技术,可以用方案的初期设计来评价。比如,老师有8...原创 2020-03-25 06:43:36 · 886 阅读 · 0 评论 -
设计模式应用教程1:命令模式的改进
曾经的大四学生实训,培训机构问了一道20分的编程题:字符界面下,模拟浏览器地址栏的前进、后退。这学期教设计模式,我用java界面,做了一下。其实,这道题如果出现在应聘中,应该先答数据结构的解决思路。运行效果:点击后退的效果:// 答案1:设计模式命令模式/** 命令模式用于项目架构* 地址栏点击方向键上、下,和点击按钮图片,都可以触发前进、后退*...原创 2020-03-13 21:52:53 · 457 阅读 · 1 评论 -
[转载]JAVA Swing异或图形模式
异或运算。规则是1和0、0和1运算,两个数不同,结果得1。如果是0和0,1和1,两个数相同,结果得0.有很多巧妙的用法。在游戏编程、界面编程中,会用到。原文链接: JAVA Swing异或图形模式 https://blog.csdn.net/sureyonder/article/details/5682087不建议用javafx.如果做应用软件,可以用javafx。但是,一...转载 2019-12-31 11:49:12 · 418 阅读 · 0 评论 -
java的环境变量
网上教程有很多,我也记录一下。某个版本的java安装后,默认是这个样子:人们说的JDK是这个文件夹:bin下面有java,javac, lib下有java库lib下的库:环境变量就可以这样配:JAVA_HOMEC:\Program Files (x86)\Java\jdk1.7.0_60CLASSPATH用分号分隔多个路径.;%JAVA_HO...原创 2019-12-21 19:38:12 · 378 阅读 · 0 评论 -
慕课:用大学课程以内的知识,开发5V5王者荣耀,愿意学习的留言
学生5个人在宿舍玩游戏,在网吧玩游戏,上课偷偷玩游戏。课上的知识,怎样变为手中的大型游戏?网上的大型游戏开发教程,都需要Unity、Cocos开发引擎,这不属于软件专业的本科课程。只使用本科课程以内的知识,放下游戏,开发5V5王者荣耀,不止简单移动,大地图、小地图、打野、团战全有。这样的慕课、培训机构,如果愿意学习,欢迎留言。...原创 2019-12-19 06:45:26 · 774 阅读 · 2 评论 -
java类博客文章总结
5V5联机对战游戏源码 https://blog.csdn.net/weixin_42644456/article/details/103089564javafx游戏编程的MVC模式 https://blog.csdn.net/weixin_42644456/article/details/103008613C的指针和java函数的参数修改问题 https://...原创 2019-11-15 21:26:27 · 952 阅读 · 0 评论 -
5V5联机对战游戏源码
一、专业技术的竞争力比较1. 大学毕业设计:购物系统、博客系统、论坛系统、聊天室等数据管理系统2. 期末实训:贪吃蛇,俄罗斯方块,飞机大战3. 普通期刊论文: 坦克大战4. 培训机构项目:基本坦克大战,高级的坦克大战(道具,自定义地图,双人操作的单机版)我做的多人联机对战游戏,和大学的教学案例、培训班的单机版案例相比,这才有竞争力。二、游戏功能1.java网络编程的消息...原创 2019-11-15 18:29:54 · 4315 阅读 · 1 评论 -
javafx游戏编程的MVC模式
一、学习的问题:1. 基础良好,一个技术仅限一本课本、一个随书案例。2. 基础不好,学过的课程停滞。做新题目、新功能困难。例如:学了俄罗斯方块,做推箱子、五子棋、贪吃蛇,缺少技术资料和思路。3. 少数社团、非软件专业、爱好者:擅长某一门。 高手在民间 java->java高级(基础班,慕课项目实战,就业班) jsp->jsp高级 js->...原创 2019-11-11 13:46:15 · 1384 阅读 · 0 评论 -
C的指针和java函数的参数修改问题
只要C的基本功良好,java的很多问题就好理解。java中,比如这样的数据定义和函数定义:public class MTest { public static int [] a=new int[]{1,2}; public static int [] b=new int[]{3,4}; public static int [] change(int [] t,in...原创 2019-11-11 10:48:26 · 215 阅读 · 0 评论 -
Java设计模式:改进的通用架构
之前的程序,一直没时间改进优化。因为看了网上慕课,有更好的架构。用更加通用的类的设计,可以实现同一个架构,做出不同的游戏。慕课案例中的写法,也只是方法之一,仍然有一些地方可以改进。比如,加入状态,加入消息队列。用消息和事件的解析,触发一个功能。大型游戏,各式各样的功能都是一个消息的解析、然后触发事件。所谓事件触发器。一个更好的案例分析要点如下:通用的父类、模式(不仅仅是设计模式中的...原创 2019-11-09 11:44:55 · 292 阅读 · 0 评论 -
游戏道具合成功能 源码 视频 PPT
游戏道具合成功能 源码 视频 PPT 下载地址链接: https://pan.baidu.com/s/13Ua5lALZnc890AKhnLQAlQ 提取码: 2dx8这是去年用Java 窗口面板写的一个树状关系的道具合成。还可以改进:1. 界面的做法,太繁琐,阅读起来并不容易。可以用简化的绘图函数,实现鼠标移上去,提示合成关系、或者装备属性。2. 更重要的。脱离界面,做成一...原创 2019-11-09 10:58:40 · 464 阅读 · 0 评论 -
俄罗斯方块,消消乐源码下载
这些小游戏是java做的,参考源码,可以用C、安卓实现。按照复杂程度区分版本,方便初学者学习。做的时候很匆忙,是为了教学演示。如果要改进,还是用设计模式、解耦、状态和标志,仍然是基于游戏的MVC结构,初始化、刷新、绘图、事件触发,就这么几件事。其他游戏,坦克大战,贪吃蛇都是一回事。局域网游戏复杂,但是,如果用网页做游戏大厅,1V1,5V5,匹配战队,能增加趣味性。复杂的一些战斗类、RPG剧...原创 2019-05-13 18:29:20 · 4708 阅读 · 9 评论 -
快速编程java:俄罗斯方块A3版,状态表示,状态处理
三个新功能:提示新块,玩家得分,暂停和继续。技术要点:功能的拆分,状态的表示,不同状态的处理。状态很重要,休闲游戏、大型游戏,都少不了状态的处理。运行效果:三个新功能:1.右上角提示下一块nextblock。当前一块不能移动,赋值给地图的二维数组后,把nextblock赋值给当前活动块。不要在原有程序上用两个整数ID,表示两个块。基本原则,原有程序尽量不改,新功能封装成...原创 2018-08-24 17:07:25 · 313 阅读 · 0 评论 -
java游戏编程:三路兵线,BOSS走位,代码和视频
一、基本功能:坦克大战:三路兵线的走,停,走,停。四个版本的飞机大战:多种运动方式。都有代码和视频下载地址。二、后续改进: 走,停+发起攻击,走,停+发起攻击三、多种技术方案:1.java基础班:多分支修改坐标2.架构:程序和数据解耦、分离,运动路线用数组、JSON、XML3.状态机+多分支+时间片4.设计模式架构:不同的移动方式,父类子类,模板方法模式5.游戏引擎库Co...原创 2019-07-01 10:57:38 · 2657 阅读 · 0 评论 -
设计模式2:2D,3D图形库,游戏框架,游戏引擎
一、2D,3D图形库我们把一条一条的函数调用,某个类的使用,这种情况叫库。比如2D图像,java 1.6的库,导入java.awt, java.swing包,调函数。图形库,比如OpenCV库,使用一个类Mat,来存放一张图片的像素数据。使用Mat类的函数,处理图片。然后调函数,就能提取一张图片的长、宽,调整图片的颜色、对比度。3D图形库,OpenGL. 代码:pub...原创 2018-09-10 12:54:05 · 2027 阅读 · 0 评论 -
设计模式1:java,设计模式,库,框架
一、程序的类自己写的类,和系统自带的类,比如String.String 的完整类名是java.lang.String,在JDK的JAR包文件中,rt.jar。String类以及函数都是JDK做好的。二、库是怎么做的一个类的源码是.java, 编译后是.class. 把.class打包成一个文件.jar. 其他程序就可以import导入这个类.包的结构,就是各级文件夹。比如...原创 2018-09-10 11:42:15 · 199 阅读 · 0 评论 -
快速编程java:设计模式和UML
总结两个游戏的制作,俄罗斯方块,消消乐。1. 用状态模式做出游戏的架构。不同的状态,划分出游戏的各个阶段、某个功能的流程、子流程。先有了整体架构。2. 各种模式实现具体功能。具体功能有多种实现方法。父类、子类,面向抽象或接口,装饰模式、适配模式、组合模式,工厂模式,这都是用的多的。一、某种模式不是唯一写法。例如,状态模式,最直接、适合初学者的就是简单的多分支语句。也可以...原创 2018-08-24 19:41:18 · 244 阅读 · 0 评论 -
快速编程java:消消乐A2版,MVC架构和状态
顺序状态制作开场、菜单、游戏过程、结束。复杂的状态变化,就能实现一些复杂流程,甚至是大型游戏、动作游戏的流程。消消乐的消除:找到连续的多块,播放消除动画。下落过程:计算地图上方的方块、补充的新块,制作一个下落移动的过程。这些事都属于MVC架构。数据的计算、准备,是Model部分。消除过程,下落过程,都是持续一段时间的过程。重复的view绘制和数据刷新update(Control)....原创 2018-08-24 19:14:52 · 1171 阅读 · 6 评论 -
快速编程java:消消乐A1版,状态编程
一年前做的项目。代码是公开的。多个版本的俄罗斯方块、消消乐代码https://blog.csdn.net/weixin_42644456/article/details/90178306 这里有网盘下载地址。其他项目,都是开源的。如果有好的创意、关卡、模块和功能点,欢迎分享,我可以实现。-------状态在应用软件、游戏软件中都有应用。比如,订单,买家下单,待发货,待收货,待评价...原创 2018-08-24 17:46:37 · 7107 阅读 · 28 评论 -
快速编程java:游戏架构,俄罗斯方块
前面有一篇网页版俄罗斯方块,看懂,难,修改,难。如果用java做,功能拆分,每个类单独负责一部分功能,耦合性低,这就叫架构良好。做起来,反而简单,还可以后续改进,增加功能。运行效果:功能拆分,总体功能是三种MVC。V,View显示。M,Model数据,C,Control,程序控制。java版 工程结构:窗口部分,游戏具体功能,图片基础功能。游戏的组成:舞台(scene,st...原创 2018-08-08 13:25:49 · 745 阅读 · 0 评论 -
学习路线:软件专业的四种能力
做新产品和新功能,是练技术的有效过程。即使基础好的同学,做一个改进功能、甚至新题目、新产品,都感觉无从下手。有四种能力,多数学生欠缺四种能力。一、查阅书籍和网上参考代码的能力。网上有很多参考源码,比如五子棋、飞机大战、俄罗斯方块、超级玛丽。要有阅读、分析他人代码的能力。只要读懂他的架构、基本技术就可以。应该了解很多源码下载的网站。完全读懂别人程序的细节,做不到。不写注释,是通病。在别人的程...原创 2018-07-21 19:44:55 · 855 阅读 · 0 评论 -
快速编程java:一套程序两个游戏
工程师,设计师,架构师。当用程序片段完成基本功能后,要做复杂功能,要做可维护,能看懂的复杂功能。必须要良好的架构。这也是面向对象+设计模式的学习目标。程序解耦,插件化,功能容易添加,还容易去掉。数据容易修改、配置。架构良好,大型软件才可能做出来。一个简单应用,一套程序,做出两款游戏。简易的飞机大战和超级玛丽,功能很简单。但架构上分成了两部分:通用功能和具体业务。图片、游戏元素(Sprite的数...原创 2018-07-26 18:39:54 · 770 阅读 · 1 评论 -
快速编程第二部分java大纲和截图
一、Java的重要性Java是多数大学的大一、大二基础编程课。Java是做Android 类APP、手游的基础。最新的JavaEE网页、网站,也是以java为基础。编程课是专业课的基础,专业课包括数据结构、操作系统、计算网络、组成原理,都需要良好的编程基础。这些专业课,也是考研的考试内容。如果能用java写单机游戏、联网游戏,编程能力已经很好,足够学好其他课。其他专业,也学编程。考...原创 2018-07-17 13:22:10 · 204 阅读 · 0 评论 -
快速编程课程大纲和作品截图
第一部分:1.JS基本分支、循环语句2.JS函数,函数参数,弹框,浏览器开发者模式,控制台输出3.循环语句练习:星号,乘法表,图片素材4.数组,二维数组,二维数组和图片,游戏地图第二部分:1. CSS设置, 彩色文字2. JS计时器,格子类游戏,格子类移动3. 游戏市场和游戏类型,小游戏市场4. 游戏素材,游戏程序框架,时间片,帧序列,碰撞检测,胜负结算第三部分:1. DIV布局和DIV浮动2. ...原创 2018-07-09 20:47:53 · 350 阅读 · 0 评论 -
设计模式3:飞机大战源码PPT演示录像
1.功能介绍:java做的飞机大战,包括4个关卡,每一关有BOSS, BOSS的移动方式有三角形、抛物线等方式,敌机子弹分散发射,有道具可回血,玩家和BOSS显示生命值,每一关有胜利画面。PPT介绍每个类的作用,有演示视频录像。这么多的功能,足够一个初学者的实训项目。2. 好的架构虽然增加了很多功能,和之前消消乐、飞机大战的程序差不多。增加功能,原有程序基本不用改。程序用父类、接口...原创 2018-09-28 22:23:12 · 1559 阅读 · 1 评论 -
设计模式4:工厂模式,多窗口编程,窗口和面板
多个窗口的管理用工厂模式,放到一个类中,管理多个窗口。需要打开同一个窗口的时候,用工厂类new Frame()建立一个新Frame。new之前要判断,如果已经打开窗口,则关闭。基本程序如下:// 工厂模式和单例模式public class ToolFac { // view public static JFrame jframeStart=null; p...原创 2018-10-15 17:18:21 · 314 阅读 · 0 评论 -
[转载]少儿编程scratch俄罗斯方块
原作者:scratch案例——俄罗斯方块https://blog.csdn.net/weixin_44602985/article/details/88092055内容详见作者原文。我是大学老师,没有讲过scratch。但是程序的功能和实现方案基本一样。甚至可以说,scratch是概要设计,java等大学课程是详细设计。scratch相当于一款小型游戏引擎库,还不用编程。大学生学...转载 2019-07-02 19:33:39 · 2870 阅读 · 0 评论