这可能是受培训班/网络视频教程的荼毒而导致的情况,虽然很多人口口声声地说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开发中的面向对象问题?相关推荐

  1. 扫雷java程序算法设计_基于Java的Windows扫雷游戏的设计与实现毕业论文+任务书+翻译及原文+源码+辅导视频...

    基于Java的Windows扫雷游戏的设计与实现 摘 要 扫雷这款游戏有着很长的历史,从扫雷被开发出来到现在进行了无数次的优化,这款游戏变得越来越让人爱不释手了,简单的玩法在加上一个好看的游戏界面,每 ...

  2. java读取微信消息_微信公众平台开发中使用Java如何实现获取用户的信息

    微信公众平台开发中使用Java如何实现获取用户的信息 发布时间:2020-11-18 15:09:28 来源:亿速云 阅读:93 作者:Leah 本篇文章为大家展示了微信公众平台开发中使用Java如何 ...

  3. java 错误码设计_关于Java中异常的设计

    Java中异常分为checked 和 unchecked 两种. 首先, 什么时候使用checked,什么时候用unchecked? checked本意是要求调用方处理这个异常, unchecked ...

  4. java五子棋游戏设计_基于Java的五子棋游戏的设计

    摘  要 五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用JAVA开发五子棋游戏.主要完成了人机对战和玩家之间联网对战2个功能.网络连接部分为Soc ...

  5. java计算器布局设计_用java设计一个计算器界面???

    展开全部 public class Cheshi extends JFrame { private Border border = BorderFactory.createEmptyBorder(5, ...

  6. java 是否含有日文_《JAVA编程思想》5分钟速成:第9章(接口)

    第9章 接口 前言: 1.抽象类(abstract class)和接口(interface)有什么异同? 2.抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(n ...

  7. Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲

    Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲 Java生鲜电商平台:   微服务是当前非常流行的技术框架,通过服务的小型化.原子化以及分布式架构的弹性伸缩和高可用性, ...

  8. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  9. java邮件登录系统设计_基于Java web的邮件管理系统的设计与实现(含源文件).doc

    毕业设计诚信声明书 毕 业 设 计 中文题目 基于Java web的邮件管理系统的设计与实现 英文题目 Based on Java web email management system design ...

最新文章

  1. [计算机视觉]人脸应用:人脸检测、人脸对比、五官检测、眨眼检测、活体检测、疲劳检测
  2. java分布式应用限流实现
  3. oracle leg函数,032-函数的嵌套与LEGB原则
  4. 【设计模式】第二章 代理模式
  5. 三角传输的在链路均衡项目中的灵活应用
  6. 三个箭头循环标志_摩托车6年免检,应该如何通过APP申请免检检验标志?
  7. Vue 可拖拽的组件
  8. 计算机网络的文件怎么删除,教你一招如何删除Win7电脑中的顽固文件
  9. 一篇文章带你搞懂DEX文件的结构
  10. httpclient 3.1跳过https请求SSL的验证
  11. 英语中学生测试软件,初中生免费学英语的软件哪个好
  12. 外星人笔记本计算机在哪里,笔记本电脑没声音,详细教您外星人笔记本没声音如何解决...
  13. 实验3 黑盒测试:决策表法及测试用例设计
  14. Node.js概述及编程基础
  15. 软件测试周刊(第52期):世事多难料,唯独花期会如期。
  16. requests.exceptions.SSLError: HTTPSConnectionPool(host=‘edith.xiaohongshu.com‘, port=443): Max retri
  17. PMP续证 | PDU具体操作图解
  18. centos系统 用kubeadm 搭建高可用k8s集群
  19. 助力零售业降本增效,零售业相关场景RPA应用
  20. unity LeapMotion 手势旋转,位移,缩放

热门文章

  1. Linux 下杀毒软件 CPU 占用率为何持续升高
  2. 博客之星年度总评选:巅峰之战,谁与争锋?
  3. 万万没想到 Java 中最重要的关键字竟然是这个!
  4. 2020 年,你还在使用 Java 中的 SimpleDateFormat 吗?
  5. 开源激荡 30 年:从免费社区到价值数十亿美元公司
  6. 沙利文:2019Q4中国公有云市场份额:阿里云、腾讯云、华为云位列前三
  7. 2020 年,程序员如何拥抱 5G ?
  8. 推荐系统如何一键实现工业级部署? ElasticCTR 百度开讲
  9. 做了5年程序员才明白,这项能力原来这么重要
  10. 如何降低 Python 的内存消耗量?