Java web 圈子设计_关于Java web开发中的面向对象问题?
这可能是受培训班/网络视频教程的荼毒而导致的情况,虽然很多人口口声声地说java是面向对象,但是他们平时工作过程中却是面向接口函数的面向过程的编程,自己还不自知,说起java的面向对象仍是一脸自豪,很讽刺。一旦接受了这种思维定势,他们就很难再跳出这种思维桎梏了。
值得一提是你能提出这个问题说明你是有自己的想法的,是认真思考过这个问题的,在下看来比平时工作当中这群行尸走肉要好的多。
正确的web端面向对象的设计方法跟application的面向对象的设计方法并无二致,仍然可以是活生生的对象,有属性有方法的活生生的对象(充血的)。
所以当别人没有追求,放弃思考,定势思维随大流时,不代表你也必须要这么干,如果你有自己的想法和思考,那么尽可能的去融入到工作中,这是个正反馈的过程,优秀与平庸就在于这种正反馈的积累,而这种正反馈的触发就是独立的思考。所以在下建议你下次写web程序的时候,最好让所谓的MVC见鬼去,不必硬是按照什么鬼bean/dao/service,j2se你是怎么玩的,web还是怎么玩。
下面我将用例子演示一个二手交易场景下的web类设计。
顾客类如下,顾客除了拥有基本的用户信息,账户信息,拥有的宝贝信息之外,还拥有售卖和购买的“动作”。
@Component("customer")
@Scope("prototype")
@Data
public class Customer{
Long userId;
String nickName;
List items;
@Resource
UserInfoSaas ifService;
@Resource
Account account;
public Customer init(Long userId){
this.userId = userId;
this.nickName = ifService.getUser(userId).getNickName();
this.items = ifService.getUser(userId).getItems();
this.account = this.account.init(userId);
return this;
}
public Item sellTheItem(Item item){
Item it = items.remove(item);
account.add(it.price);
it.freezeDB();
return it;
}
public Item payTheItem(Item item){
account.minus(item.price);
items.add(item);
item.unfreezeDB()
return item;
}
//......}
场景类如下,这是一个二手交易场景,对于这种场景来说,就是一个顾客把他的宝贝卖给另一个顾客。
@Service
public class SecondHandTradeCtxImpl implements SecondHandTradeCtx{
@Resource
ApplicationContext ctx;
private Customer getCustomer(Long userId){
Customer c = (Customer)ctx.getBean("customer");
c.init(userId);
return c;
}
@Override
@Transcation
public Boolean makeADeal(Long buyerId, Long sellerId, Item item){
Customer buyer = getCustomer(buyerId);
Customer seller = getCustomer(sellerId);
Item i = seller.sellTheItem(item);
if(null != i) {
if(buyer.payTheItem(i).isOwnedBy(buyer))
return true;
return false;
}
}
}
Controller类就不需要再写出来了吧。
这样是不是找到了熟悉的感觉?其实web不过是在场景里面多封装了一层http暴露途径而已(controller),别想的好像j2ee有啥定势思维一样,其实开发se和ee本质上都是一样的,编程说到底哪有什么定势思维呢?只是做java的人多数放弃了思考成为了代码搬运僵尸而已。
如果说javaweb就一定要三层分离,五层架空,七层解耦或者怎么怎么才是绝对的正确,那在下建议别做java了(来做python吧朋友),把编程这么有意思的创意型工作变成教条主义,和咸鱼有什么区别?国内的java圈子还是缺乏一些务实,总把一些框架/类库/架构/设计模式捧到天上,并当做教条膜拜。
Java web 圈子设计_关于Java web开发中的面向对象问题?相关推荐
- 扫雷java程序算法设计_基于Java的Windows扫雷游戏的设计与实现毕业论文+任务书+翻译及原文+源码+辅导视频...
基于Java的Windows扫雷游戏的设计与实现 摘 要 扫雷这款游戏有着很长的历史,从扫雷被开发出来到现在进行了无数次的优化,这款游戏变得越来越让人爱不释手了,简单的玩法在加上一个好看的游戏界面,每 ...
- java读取微信消息_微信公众平台开发中使用Java如何实现获取用户的信息
微信公众平台开发中使用Java如何实现获取用户的信息 发布时间:2020-11-18 15:09:28 来源:亿速云 阅读:93 作者:Leah 本篇文章为大家展示了微信公众平台开发中使用Java如何 ...
- java 错误码设计_关于Java中异常的设计
Java中异常分为checked 和 unchecked 两种. 首先, 什么时候使用checked,什么时候用unchecked? checked本意是要求调用方处理这个异常, unchecked ...
- java五子棋游戏设计_基于Java的五子棋游戏的设计
摘 要 五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用JAVA开发五子棋游戏.主要完成了人机对战和玩家之间联网对战2个功能.网络连接部分为Soc ...
- java计算器布局设计_用java设计一个计算器界面???
展开全部 public class Cheshi extends JFrame { private Border border = BorderFactory.createEmptyBorder(5, ...
- java 是否含有日文_《JAVA编程思想》5分钟速成:第9章(接口)
第9章 接口 前言: 1.抽象类(abstract class)和接口(interface)有什么异同? 2.抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(n ...
- Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲
Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲 Java生鲜电商平台: 微服务是当前非常流行的技术框架,通过服务的小型化.原子化以及分布式架构的弹性伸缩和高可用性, ...
- java项目----教务管理系统_基于Java的教务管理系统
java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...
- java邮件登录系统设计_基于Java web的邮件管理系统的设计与实现(含源文件).doc
毕业设计诚信声明书 毕 业 设 计 中文题目 基于Java web的邮件管理系统的设计与实现 英文题目 Based on Java web email management system design ...
最新文章
- [计算机视觉]人脸应用:人脸检测、人脸对比、五官检测、眨眼检测、活体检测、疲劳检测
- java分布式应用限流实现
- oracle leg函数,032-函数的嵌套与LEGB原则
- 【设计模式】第二章 代理模式
- 三角传输的在链路均衡项目中的灵活应用
- 三个箭头循环标志_摩托车6年免检,应该如何通过APP申请免检检验标志?
- Vue 可拖拽的组件
- 计算机网络的文件怎么删除,教你一招如何删除Win7电脑中的顽固文件
- 一篇文章带你搞懂DEX文件的结构
- httpclient 3.1跳过https请求SSL的验证
- 英语中学生测试软件,初中生免费学英语的软件哪个好
- 外星人笔记本计算机在哪里,笔记本电脑没声音,详细教您外星人笔记本没声音如何解决...
- 实验3 黑盒测试:决策表法及测试用例设计
- Node.js概述及编程基础
- 软件测试周刊(第52期):世事多难料,唯独花期会如期。
- requests.exceptions.SSLError: HTTPSConnectionPool(host=‘edith.xiaohongshu.com‘, port=443): Max retri
- PMP续证 | PDU具体操作图解
- centos系统 用kubeadm 搭建高可用k8s集群
- 助力零售业降本增效,零售业相关场景RPA应用
- unity LeapMotion 手势旋转,位移,缩放