1
mahaoqu 5 小时 1 分钟前 ![]() 大概就这种:
public interface Subject { public void attach(Observer observer); public void detach(Observer observer); public void notifyObservers(); } public interface Observer { public void update(Subject subject); } public class HelloWorldSubject implements Subject { private ArrayList<Observer> observers; private String str; public HelloWorldSubject() { super(); observers = new ArrayList<Observer>(); } public void attach(Observer observer) { observers.add(observer); } public void detach(Observer observer) { observers.remove(observer); } public void notifyObservers() { Iterator<Observer> iter = observers.iterator(); while (iter.hasNext()) { Observer observer = iter.next(); observer.update(this); } } public String getStr() { return str; } public void setStr(String str) { this.str = str; notifyObservers(); } } public class HelloWorldObserver implements Observer { public void update(Subject subject) { HelloWorldSubject sub = (HelloWorldSubject)subject; System.out.println(sub.getStr()); } } public interface Command { void execute(); } public class HelloWorldCommand implements Command { private HelloWorldSubject subject; public HelloWorldCommand(Subject subject) { super(); this.subject = (HelloWorldSubject)subject; } public void execute() { subject.setStr("hello world"); } } public interface AbstractFactory { public Subject createSubject(); public Observer createObserver(); public Command createCommand(Subject subject); } public class HelloWorldFactory implements AbstractFactory { public Subject createSubject() { return new HelloWorldSubject(); } public Observer createObserver() { return new HelloWorldObserver(); } public Command createCommand(Subject subject) { return new HelloWorldCommand(subject); } } public class FactoryMakerSingleton { private static FactoryMakerSingleton instance = null; private AbstractFactory factory; private FactoryMakerSingleton() { factory = new HelloWorldFactory(); } public static synchronized FactoryMakerSingleton getInstance() { if (instance == null) { instance = new FactoryMakerSingleton(); } return instance; } public AbstractFactory getFactory() { return factory; } } public class AbuseDesignPatterns { public static void main(String[] args) { AbstractFactory factory = FactoryMakerSingleton.getInstance().getFactory(); Subject subject = factory.createSubject(); subject.attach(factory.createObserver()); Command command = factory.createCommand(subject); command.execute(); } } |
2
NessajCN 4 小时 57 分钟前 via Android
Jvav 味儿比二次元味儿都冲
如果你还需要别人来告诉你啥是 Jvav 味儿而不能靠自己一眼分辨, 那说明你自己早就腌制入味了 就好像抽烟的人旁人一闻可知,他自己却总是自我感觉良好 |
![]() |
4
wxw752 4 小时 52 分钟前 ![]() 你糊涂呀,这么好的话题不在上班时间发。
|
![]() |
5
sagaxu 4 小时 52 分钟前 ![]() 读取某个文件,正常味道的语言
open().read() fd = open(...); read(fd, ...); File(...).readAll() ioutils.read(...) Java 味儿,来,先学一下 reader, buffered reader, inputstream, buffered input stream ,然后再研究用哪个,中间包的用完了该不该 close 。 设计时就确定只有一个 implementation ,也要强行定义 interface ,还要定义一堆一模一样的 vo/dto...,不要问,问就是业界规范,大家都这么干。 |
![]() |
8
dranfree 4 小时 49 分钟前 via Android
Java 味就是啰嗦,代码写起来像老太太的裹脚布,又臭又长……
|
![]() |
9
murmur 4 小时 47 分钟前
@sagaxu java 也有 hutool ,别黑了,java 味就是标准的 controller bean service ,真落在业务逻辑,都是调库,谁手搓原生代码啊
|
![]() |
10
murmur 4 小时 45 分钟前
@dranfree 跟 objc 比 java 都是弟弟
java person.fuck(personb, true, true) obj-c [person haveSexualIntercorseWith]:personB healthCheckBeforeYouDid: YES useSomethingToProtectYourSafety: YES 比又长又臭 java 真不配 |
11
fulln 4 小时 42 分钟前
不懂,说分多个文件 java 味十足的, 要是看了「重构」 这个本书, 那不得气得跳脚...
|
![]() |
12
retrocode 4 小时 42 分钟前 ![]() java 味 --> 指一个简单 crud 先来个 dto/vo/cotroller/service/serviceimpl/dao/daoimpl/mapper/mapper.xml 大礼包
|
![]() |
14
aboutier 4 小时 24 分钟前
|
15
huigeer 4 小时 17 分钟前
居然没有人说 lamuda 表达式,
|
16
fox0001 4 小时 14 分钟前 via Android
就是代码繁琐
|
17
aaniao002 4 小时 5 分钟前 via Android
哪门语言需要 ide 来自动生成代码。
|
![]() |
18
lisongeee 4 小时 4 分钟前
搬一下我 1 坤年之前一个回复 https://v2ex.com/t/872064#r_11975008
最 java 味应该是一个项目里写 99% 都用不到的 额外的 空的 一堆什么也不干的 setter/getter |
![]() |
19
debuggerx 4 小时 4 分钟前 ![]() 我受不了的 java 味:
1. 无意义的抽象和继承,简单问题复杂化,自以为是预留扩展性,然而绝大多数情况下非但用不到,反而是增加了复杂度和项目维护成本(当然有人把这种操作当作防御式编程增加自身不可替代性,实际结果往往不过是叠屎山) 2. 滥用多线程。有些人似乎觉得 java 不写多线程很 low ,结果滥用多线程,没必要的时候也要强上,然而很多 javaer 实际的心智水平根本玩不转多线程,要么自以为提高效率的多线程实际比一般写法还慢,要么生产出现线程安全甚至死锁,纯纯又菜又爱玩自讨苦吃 3. 滥用架构。web 服务必上 redis ,设计必须拆成微服务,看似追求最近技术方案,然而却抱着 mysql5.7 、centos6 不放,整天还研究 java1.8 的 jvm 调参,就不想想守着这堆破烂搞架构的路子能走多远。 4. 把一些 java 本身缺陷导致的东西当作唯一正确性去要求别的语言和框架,比如语法贫瘠导致的各种设计模式,比如灵活性不足而不得不使用的反射技术,比如落后的线程模型催生的一堆教条,很多新的语言和框架从本身就已经解决或者规避了,有些 javaer 用的时候却还习惯性往上靠,靠的不对劲了还觉得是那些语言和框架不行,反正就是 java 祖宗之法不可变…… |
![]() |
20
lisongeee 4 小时 0 分钟前
关于我在 #18 发的评论的佐证评论 https://v2ex.com/t/872064?p=2#r_11976203
|
![]() |
21
zwzwzwzwzxt 4 小时 0 分钟前 ![]() |
23
sthwrong 3 小时 56 分钟前
特性啊,啰嗦啊,套娃啊什么的都好改,毕竟也不是没改。最恶心的其实是守旧,他发任他发,我用 java8.
|
![]() |
25
mmdsun 3 小时 4 分钟前
上次我看到这词的时候还是吐槽说:go 语言 sdk java 味:
https://www.v2ex.com/t/1036033 |
![]() |
26
iorilu 2 小时 59 分钟前
就是一看几十个文件, 实际上核心代码就几十行
|
27
NessajCN 2 小时 32 分钟前 via Android
对了,想了解啥叫其他语言里透出 jvav 味儿的可以去看看 NestJS
体会一下啥叫扑鼻的 Jvav 恶臭 |
![]() |
28
0312birdzhang 2 小时 18 分钟前
没喝过咖啡吗?当然是咖啡味了 (doge
|
![]() |
29
Lightbright 2 小时 8 分钟前 via Android
用 ai 都更浪费 token
|
30
zed1018 1 小时 59 分钟前
@zwzwzwzwzxt 长命名不是 OC 味吗
|
![]() |
31
pikko 1 小时 49 分钟前
@zwzwzwzwzxt #21 这个类名比我命还长
|
![]() |
33
gowk 57 分钟前
httpDispatcherDecoratorHandlerAdapterStrategyConfigObserverFactory
https://x.com/cholf5/status/1900033963290448223 |
![]() |
34
ikas 53 分钟前
味道在于人,就算 java 现在也不需要什么 FileUtils,TimeUtil,都是什么年代的了..nio 的 Files,time 的 Instant 等不够用?
|
![]() |
35
ajaxfunction 39 分钟前
典型的又臭又长。 虽然是 ide 可以生成,getter setter 一大堆。
其他语言 30 行代码就够,他的 100 行 |