相关疑难解决方法(0)

喜欢构成而不是继承?

为什么喜欢构图而不是继承呢?每种方法都有哪些权衡取舍?什么时候应该选择继承而不是作文?

language-agnostic oop inheritance composition aggregation

1538
推荐指数
23
解决办法
29万
查看次数

476
推荐指数
13
解决办法
22万
查看次数

控制反转与依赖注入

根据Martin Fowler撰写论文,控制反转是程序控制流程被颠倒的原则:代替程序员控制程序流程,外部源(框架,服务,其他组件)控制它.这就像我们把东西塞进别的东西.他提到了一个关于EJB 2.0的例子:

例如,会话Bean接口定义ejbRemove,ejbPassivate(存储到辅助存储)和ejbActivate(从被动状态恢复).你无法控制何时调用这些方法,只是它们的作用.容器打电话给我们,我们不打电话给它.

这导致框架和库之间的区别:

控制反转是使框架与库不同的关键部分.库本质上是一组可以调用的函数,这些日子通常组织成类.每个调用都会执行一些操作并将控制权返回给客户端.

我认为,DI是IOC的观点,意味着对象的依赖性被颠倒了:相反,它控制着自己的依赖关系,生命周期......还有其他东西为你做.但是,正如你用手告诉我的DI,DI不一定是IOC.我们仍然可以有DI而没有IOC.

然而,在本文中(来自pococapsule,另一个IOC C/C++框架),它表明,由于IOC和DI,IOC容器和DI框架远远优于J2EE,因为J2EE将框架代码混合到组件中因此不能成为普通的旧Java/C++对象(PO​​JO/POCO).

除依赖注入模式之外的控制容器的反转(存档链接)

附加阅读以了解旧的基于组件的开发框架的问题是什么,这导致了上面的第二篇论文:为什么以及什么是控制反转(存档链接)

我的问题:IOC和DI究竟是什么?我很迷惑.基于pococapsule,IOC比仅仅反转对象或程序员和框架之间的控制更重要.

dependency-injection inversion-of-control

467
推荐指数
14
解决办法
26万
查看次数

Design Patterns基于Web的应用程序

我正在设计一个简单的基于Web的应用程序.我是这个基于Web的域的新手.我需要您对设计模式的建议,例如如何在Servlet中分配责任,制作新Servlet的标准等.

实际上,我的主页上有很少的实体,并且每个实体都对应于我们添加,编辑和删除等几个选项.之前我每个选项使用一个Servlet,比如Servlet1,用于添加entity1,Servlet2用于编辑entity1等等,这样我们最终得到了大量的servlet.

现在我们正在改变我们的设计.我的问题是你如何选择如何选择servlet的责任.我们是否应该为每个实体安装一个Servlet,它将处理所有选项并将请求转发给服务层.或者我们应该为整个页面都有一个servlet来处理整个页面请求,然后将其转发到相应的服务层?此外,请求对象是否应转发到服务层.

java jsp design-patterns servlets

356
推荐指数
3
解决办法
10万
查看次数

170
推荐指数
8
解决办法
7万
查看次数

设计模式:工厂与工厂方法与抽象工厂

我正在从网站上阅读设计模式

在那里我读到了有关工厂,工厂方法和抽象工厂的信息,但它们很混乱,我对定义并不清楚.根据定义

Factory - 创建对象而不将实例化逻辑暴露给客户端,并通过公共接口引用新创建的对象.是Factory Method的简化版本

工厂方法 - 定义用于创建对象的接口,但让子类决定实例化哪个类,并通过公共接口引用新创建的对象.

抽象工厂 - 提供用于创建相关对象族的界面,而无需明确指定其类.

我还查看了关于抽象工厂与工厂方法的其他stackoverflow线程,但是那里绘制的UML图使我的理解更加糟糕.

有谁能告诉我

  1. 这三种模式如何相互不同?
  2. 什么时候用哪个?
  3. 如果可能的话,任何与这些模式相关的java示例?

java language-agnostic design-patterns factory factory-method

164
推荐指数
6
解决办法
8万
查看次数

设计模式:抽象工厂与工厂方法

注意:问题在帖子的末尾.

我已经阅读了有关Abstract Factory vs Factory Method的其他stackoverflow线程.我理解每个模式的意图.但是,我不清楚这个定义.

Factory方法定义了一个用于创建对象的接口,但是让子类决定实例化哪些接口.工厂方法允许类将实例化延迟到子类.

相比之下,抽象工厂提供了一个接口,用于创建相关或从属对象的族,而无需指定其具体类.

- John Feminella

抽象工厂看起来非常相似的工厂方法.我已经绘制了一些UML类来说明我的观点.

注意:

  • 该图来自www.yuml.com,因此它们并不完美.但它是免费服务:).
  • 图表可能不完美.我还在学习GoF设计模式.

工厂方法:

工厂方法

抽象工厂(仅1名成员):

抽象工厂(仅1名成员)

抽象工厂(更多成员):

替代文字

问题:

  1. 如果抽象工厂只有一个创建者和一个产品,它仍然是抽象工厂模式吗?(创建家庭的界面)
  2. 可以从接口创建Factory Method具体创建者还是必须来自类?(类推迟实例化到子类)
  3. 如果抽象工厂只能有一个创建者和一个产品,那么抽象工厂工厂方法之间的唯一区别是前者的创建者是一个接口而后者的创建者是一个类?

language-agnostic uml design-patterns factory-method abstract-factory

141
推荐指数
3
解决办法
6万
查看次数

你能用一个好的C#例子来解释Liskov Substitution Principle吗?

你能用一个很好的C#例子解释Liskov替换原理(SOLID的'L'),以简化的方式涵盖原理的所有方面吗?如果真的有可能.

.net c# oop liskov-substitution-principle solid-principles

90
推荐指数
2
解决办法
5万
查看次数

抽象工厂,工厂方法,生成器

这似乎是一个问题似乎是一个骗局,但请耐心等待 - 我保证我已经阅读了相关的帖子(以及GOF书).

在我读完所有内容之后,我仍然没有清楚何时使用抽象工厂,工厂方法或构建器.我相信它会在我看到一个问题的简单例子之后陷入困境,这个问题最好由建筑商来处理,而使用抽象工厂显然是愚蠢的.

你能提供一个简单的例子,你可以清楚地使用一种模式而不是其他模式吗?

我理解,如果这个例子过于简单,可能归结为意见问题,但我希望如果有人可以,那个人就是这样.

谢谢.

language-agnostic design-patterns builder factory-method abstract-factory

32
推荐指数
2
解决办法
6446
查看次数

工厂创建方法总是静态?

工厂类是静态的,而工厂方法也是静态的.

设计模式书中的GOF是否规定工厂及其方法必须是静态的,以满足模式的严格定义?

工厂+ /方法静态只是模式的结果吗?状态数据通常不由工厂类维护,因此它们通常是静态的.

design-patterns

19
推荐指数
4
解决办法
8563
查看次数