- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们的应用程序大量使用工厂来吐出对象,但我经常想知道它们是否总是真的有必要,并且将“已知对象”的实例创建为 bean 并不会更好。争论的焦点是开发人员经常定制这些返回对象的实现(这些对象与它们的接口(interface)类型一起返回),并且由于我们在技术上并不“知道”我们到底得到了什么,所以最好使用工厂。我现在需要创建一个工厂,这需要接口(interface)、类实现,然后是工厂。不过,我的对象不会改变——它确实是一个具有特定用途的具体对象……我不应该只实例化一个获取和设置状态的 bean 吗?我试图避免过早的概括。
最佳答案
工厂或依赖注入(inject)解决方案的全部目的是减少客户端和对象的运行时类型之间的耦合。的确,客户端必须知道接口(interface)和数据源,但现在源可以自由返回实现该接口(interface)的任何类型。它还允许您将运行时类型的知识封装在一个地方——只有工厂或依赖注入(inject)解决方案需要知道。
这在生成运行时代理以实现声明式事务时很有用。从客户的角度来看,他们正在处理界面。工厂可以生成为客户端管理事务的代理。
一旦您键入“new”,客户端就会在运行时使用编译类型。改变它意味着改变客户。如果您在代码中有很多地方调用“new”,这可能是一个维护问题。
什么时候叫“new”?我认为在方法内部实例化本地对象是合适的,当它们超出范围时将被 GC。该方法创建它们,使用它们,然后它们就完成了。我不会在那里使用工厂或 DI 解决方案。
也许你应该关闭你的工厂并考虑依赖注入(inject)解决方案,如 Spring、Guice 或 PicoContainer。
关于java - 什么时候使用工厂而不是简单地返回一个 bean 是一个糟糕的设计选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1481330/
我想在这里说的是我在从之前离开的相同状态重新启动我的应用程序时遇到的问题。我在这方面做了很多研发,并且已经解决了 stackoverflow 中发布的问题。所以请不要说它是重复的。 我试过设置这些选项
当我在我的类中实现 __cmp__ 函数时,python 是否会在内部重载“==”,我们在 C++ 中是如何做到的? 只是好奇。我是 python 的新手。 :) 最佳答案 ==的含义当您定义 __c
我在 Raspberry Pi2 上安装了 Gitlab,几个月来它运行良好。但自从关闭了RPi的电源后,它就不再起作用了。网页返回502错误。 502 Whoops, GitLab is takin
有人知道用户登陆带有Webfonts的页面时为什么Google Chrome浏览器崩溃吗 它并不会一直发生,而是经常发生 我刚得到一个蓝屏页面,却不知道为什么:该页面不是来自重定向时就很好了。 这是我
当我登录时,Skype始终会给出此错误。 糟糕,Skype存在问题。尝试注销然后重新登录。 STARTUP_LOAD_ERROR MACBOOK 最佳答案 Macbook 用户 退出Skype 回家
我正在尝试从 flutter 开始,首先我在 cmd 上运行 flutter doctor 它有效。在我安装了 ANDROID SDK 之后,同样的命令 flutter doctor 给了我异常:
从 android studio 终端运行 flutter attach 不工作。显示错误flutter 意外退出。 终端输出: flutter attach Checking for adverti
当使用 TinyMCE 4 测试所有浏览器时,Chrome 非常慢。 (我尝试从 TinyMCE 中删除所有插件,但没有任何区别。) Chrome 需要大约 20-25 秒在 TinyMCE 中呈现一
我试图让下面的脚本工作,以便从远程服务器(服务器 1)读取特定目录中的 CSV 文件列表,并将数据移植到另一台服务器的 PostgreSQL 数据库中。 我已经创建了一个 rsa SSH key 并将
在嵌入式 linux 环境中(在 PowerPC 上定制的 2.4.25)几个小时后我得到以下内核 panic : Oops: kernel access of bad area, sig: 11 N
在将现有 Node.js (Hapi.js) + RethinkDB 从 OVH VPS(最小 vps)迁移到 AWS Lambda( Node )+ DynamoDB 的过程中,我最近遇到了一个非常
我是一名优秀的程序员,十分优秀!