我对IoC/windsor来说是全新的.我从谷歌开始学习它,但不幸的是,我没有得到适当的文档,这对我来说更容易理解.所以我来这里有这样的标题/问题.
每个文档/页面(网页),像这样开始类似的东西
"我们应该从注册类/接口开始,然后解决它......"
但是没有一个页面显示有关如何实现这一目标的完整文档,我也尝试制作一个简单的项目,但是我没能运行它.我不知道如何解决容器,在哪里/如何调用install(),我完全搞砸了.
任何人都可以帮我一个示例项目,其中包括注册/安装的完整演示?
提前致谢 :)
我试图了解真正定义紧耦合的原因.我已经阅读了很多关于这个主题的帖子,但有一件事仍然不适合我.
我理解应该使用接口而不是具体实现将类注入其他类.我也理解,如果一个类遵循一个接口,那么任何使用注入接口的类都可以调用接口中定义的公共函数并期望类似的功能.
interface iFormatter()
{
public function format(array $order): array
}
public class OrderFormatter implements iFormatter
{
public function format(array $order): array
{
// ...
return $formattedArray;
}
}
public class OrderGenerator implements iGenerator
{
private $formatter;
public function __construct(iFormatter $formatter)
{
$this->formatter = $formatter;
}
public function generate()
{
// ...
return $this->formatter->format($order);
}
}
Run Code Online (Sandbox Code Playgroud)
所以我认为在只有格式化器改变的情况下,这将被定义为松散耦合;
$example = new OrderGenerator(new CarOrderFormatter);
$example->generate();
$example = new OrderGenerator(new VanOrderFormatter);
$example->generate();
Run Code Online (Sandbox Code Playgroud)
我不太清楚的是,当你把责任从彼此中抽离出来时,这些课程仍然紧密相连.就像是
$example = …Run Code Online (Sandbox Code Playgroud) 我在MSDN上研究MVC的几个概念,我达到了一个点,他们写了一个词"MVC的三个主要组件之间的松散耦合".
我搜索了很多关于谷歌松散耦合的信息.但我每次都得到不同的答案.
即使我有一个新词紧密耦合和紧密凝聚力.
任何人都可以正确定义这个词,它究竟意味着什么.
我很期待你的回复.
谢谢.
我对java中的松散耦合和紧耦合有一些困惑.我知道松散耦合意味着关于彼此的最少信息和紧耦合意味着依赖.我们知道松散耦合可以通过接口实现和继承实现紧密耦合.
例如:
1)A(界面)<--------------------- B(班级)
2)C(班级)<--------------------- D(班级)
假设这四个类是我整个应用程序的一部分,那么B或D中的更改不会对应用程序产生任何影响(从运行的角度来看).从A或C中删除任何方法或变量都需要在应用程序中进行如此多的更改.所有得分都是2-2,但在C或A中添加新方法是不同的.如果我在C中添加新方法不会影响应用程序但是在A中添加,至少我必须在B和所有实现接口A的类中重写此方法.所以至少在这种情况下它是如何松散耦合的.我的疑问是,继承给予总是紧密耦合.我学习继承是OOP的强大工具之一.如果一个类遵循"是一种关系"则设计然后使用继承.松耦合意味着彼此之间的信息较少.A和C都不知道将来要实现或扩展哪个类,但是在添加B和D之后,现在B不依赖于A,因为它的所有方法都是抽象的,但D也可以覆盖继承特性.
当我可以简单地使用时,为什么我应该使用Communicating with Other Fragments模式
((MyActivity)getActivity()).doFoo();
在我的Fragment?
我正在用Java编写一个国际象棋游戏,用一个具有2d Square对象数组的Board类进行设置.每个正方形的高度和宽度(介于0和7之间).我将编写一个接收方形对象,垂直偏移和水平偏移的方法.
例如:如果我调用getNearbySquare(mySquare,3,2),它应该返回我的Board中的方形对象,它位于mysquare上方3和mySquare右侧2.
我最初在Square类中将它写为实例方法,它只是采用垂直和水平偏移.问题是,我正在创建然后返回一个新的方形对象,而不是我的Board类中的2d数组中的正确对象.
我看到两个选择:
1)在Square类中创建一个实例方法,该方法接受Board对象,垂直偏移和水平偏移.我将找到调用此方法的方形对象的当前高度和宽度,添加垂直和水平偏移以在所需方块的板中获取新位置,然后使用Board [newHeight] [newWidth]访问它.
2)在Board类中创建一个实例方法做同样的事情,但不要求我传入Board对象,如1).相反,我需要传入方形对象.
在做出这些决定时,是否存在普遍接受的做法?
感谢Mariogs的帮助
oop ×6
architecture ×2
java ×2
.net ×1
android ×1
asp.net-mvc ×1
coupling ×1
decoupling ×1
fragment ×1
object ×1
ooad ×1
php ×1
theory ×1