public class TightlyCoupledClient{
public static void main(String[] args) {
TightlyCoupledServer server = new TightlyCoupledServer();
server.x=5; //should use a setter method
System.out.println("Value of x: " + server.x);
}
}
class TightlyCoupledServer {
我指的是Eric编写的关于degign模式的“可重用面向对象软件的元素”一书。然而,我理解了外观模式的概念,但仍然无法理解书中给出的实现点,因为我对实现部分(特别是对实现部分)不太了解。
以下是书中提到的两点:
减少客户端子系统的耦合:通过使Facade类成为抽象类。公共v/s私有子系统类.
请有人用一些例子或我的代码来解释这一点:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Facade_CSharp
{
class Program
具有这样的类,其中包含两个实例变量的两个getter:
class A
{
_fieldA;
_fieldB;
GetA()
GetB()
GetSpecialNumber(int a)
{
//calculation not requiring any fields
}
}
这个班将被归类为完全缺乏凝聚力。然而,我认为在某些情况下,这样的无状态对象是需要的,因此不应该应用内聚度量。还是说这是一种错误的方法/想法?事实上,我从未读到过低凝聚力是好的,除了在本材料末尾提到的几个例子:。
我有一个函数,它的工作是查看作为帖子内容的字符串并找到某些片段:
public static function findInsidePostContent( $post = Null )
{
//post_content comes from a WP_Post object.
$post_blocks = \parse_blocks( $post->post_content );
//Look inside, do some things.
}
The函数有一个我们始终可以依赖的绝对真理:它仅适用于WP_Post对象。
但是,当然,由于参数是Null,这里有
我这样说的意思是“学生”,它是为“学生”表行建模:
class Student
{
public string lastname;
public string firstname;
}
对我来说,编写接口程序,甚至继承“常规”类,都是没有意义的。如果我使用的是实体框架(或数据库的任何其他抽象)之类的东西,那么我真的没有必要担心这里的耦合问题,在这里我已经实现了关注点的分离。
迟早,我必须知道我应该使用哪个类,而且我很难看到将来与模型类紧密耦合可能出现的任何问题。
即使我有,
class Student extends Person
{
public string las
我知道松耦合和紧耦合的信息。但是我暂停了,什么时候我可以决定在哪里和什么时候使用?我不明白什么时候我需要松耦合和紧耦合?
请看:
如果您查看适配器类:
///
/// The 'Adapter' class
///
class Adapter : Target
{
private Adaptee _adaptee = new Adaptee();
public override void Request()
{
// Possibly do some other work
// and then cal
我已经创建了一个rest客户端来在我的应用程序之外进行调用。我希望将从rest调用中接收到的数据发送回客户端的web浏览器。
类似于下面的内容,但什么是构建代码的最好方法,以允许访问响应以尽可能松散耦合地写回web浏览器?我不想在请求处理程序中定义rest客户端。
var servReq = http.request(options, function(restResponse){
var status = restResponse.statusCode
var headers = restResponse.headers
restResponse.setEncodin
我只是在阅读由Steve McConell完成的代码,我正在考虑他在一个关于松耦合的章节中给出的一个例子。它是一个方法的接口,该方法计算员工的假期数,该方法是根据员工及其销售的开始日期计算的。作者建议将输入日期和销售额作为方法的参数,而不是雇员的实例:
int holidays(Date entryDate, Number sales)
而不是
int holidays(Employee emp)
其论点是,这会使方法的客户端解耦,因为它不需要知道任何关于Employee类的信息。
我想到了两件事:
提供计算中断封装所需的所有参数。它显示了如何计算结果的方法的内部。
这是很难改变的,例
有人能解释什么是内容耦合,以及在以下代码中是如何发生的吗?
public class Line
{
private Point start, end;
...
public Point getStart() { return start; }
public Point getEnd() { return end; }
}
public class Arch
{
private Line baseline;
...
void slant(int newY)
{
Point theEnd = baseline.getEnd();
theEnd.
我知道有一个流行的概念,即实现细节不值得测试和/或实现应该公开。为了这个问题,请假定测试和最小化API都是有好处的。
我们应该如何测试内部的自由函数?
// Example for C
static MyType do_something_internal(OtherType * X);
// Or (roughly) equivalently
namespace { MyType do_something_internal(OtherType * X); }
我们目前采用的选项是公开调用,但在一个详细的命名空间中:
// Preserve the friendly function name
我已经使用xrefitem和别名创建了4个自定义命令,每个命令都是在我们项目中工作的4个程序员之一的名字。
我想设置它,以便每个命令都能根据人名生成自己的唯一标题,但都会被添加到同一个列表中。
john =\xrefitem john \"John says\" \"Comments\"
bob =\xrefitem bob \"Bob says\" \"Comments\"
dave =\xrefitem dave \"Dave says\" \"Comments\"
george
我最近想处理一下DI。如果到目前为止,我对所有事情的理解都是正确的,那么主要的目的是编写松散耦合的代码,以便于重用。(另见)
到目前为止还不错,但我仍然不太清楚的一点是,在哪里放置接口。
一个例子比一千字更能说明问题:
A图书馆:
public class A
{
public A(IInterfaceB b)
{}
}
图书馆B:
public interface IInterfaceB
{}
public class B : IInterfaceB
{
public B (IInterfaceC c)
{}
}
C图书馆:
public interface