草庐IT

Abstraction

全部标签

c# - 清洁代码 : Should Objects have public properties?

我正在阅读“CleanCode”一书,并且正在为一个概念而苦苦挣扎。在讨论对象和数据结构时,它声明如下:对象将其数据隐藏在抽象之后,并公开操作该数据的函数。数据结构公开了它们的数据并且没有任何有意义的功能。因此,我从中得到的是我的对象不应该有任何公共(public)属性,我应该只有对属性执行操作的方法。如果我确实需要访问属性,它们应该在数据结构上,可以从我的对象上的方法返回?使用这种方法,我似乎需要为对象上的Height属性使用GetHeight()和SetHeight()方法,而不是仅仅使用get和set属性(property)。也许我不完全理解所建议的内容,但这是我对“对象隐藏其数

postgresql - 抽象 PSQL 写查询

我有一个典型的函数,它从前端接收一个post请求并将数据解码为一个结构,以便将其放入psql数据库中。你可以看到下面的代码。我的问题是我希望能够抽象这个函数,以便我可以给它任何数量的任何类型的变量,这样对于每个请求我都不必有一个单独的写处理程序。这看起来很难,因为我必须以某种方式传递一种方法来抽象varprofitReqprofitReq以适用于任何结构。如果golang有某种evalstring方法,我会知道该怎么做,但如果我错了,有人会纠正我,但我认为它不会。我需要更改的另一个地方是QueryRow-我必须能够在可变数量的变量中传递它。我可以很容易地构造字符串,但我不确定如何将变量

postgresql - 抽象 PSQL 写查询

我有一个典型的函数,它从前端接收一个post请求并将数据解码为一个结构,以便将其放入psql数据库中。你可以看到下面的代码。我的问题是我希望能够抽象这个函数,以便我可以给它任何数量的任何类型的变量,这样对于每个请求我都不必有一个单独的写处理程序。这看起来很难,因为我必须以某种方式传递一种方法来抽象varprofitReqprofitReq以适用于任何结构。如果golang有某种evalstring方法,我会知道该怎么做,但如果我错了,有人会纠正我,但我认为它不会。我需要更改的另一个地方是QueryRow-我必须能够在可变数量的变量中传递它。我可以很容易地构造字符串,但我不确定如何将变量

java - 我可以编写一个遍历集合和数组的 for 循环吗?

是否有可能检查一个对象是数组还是带有一个子句的集合?我想要达到的目标:假设数组实现Iterable,并且假设Objectfoo可以是数组或集合,我想使用这样的代码片段:if(fooinstanceofIterable){for(Objectf:(Iterable)foo){//dosomethingwithf}}不幸的是,数组不能转换为Iterable。它也没有实现Collection。是否有任何其他可能性可以像上面那样在一个循环中处理两者?而不是-当然-使用if-elseif-clause和两个循环(这不太好)。编辑:针对这些答案。我知道isArray()方法,但在这种情况下是强制转

java - 我可以编写一个遍历集合和数组的 for 循环吗?

是否有可能检查一个对象是数组还是带有一个子句的集合?我想要达到的目标:假设数组实现Iterable,并且假设Objectfoo可以是数组或集合,我想使用这样的代码片段:if(fooinstanceofIterable){for(Objectf:(Iterable)foo){//dosomethingwithf}}不幸的是,数组不能转换为Iterable。它也没有实现Collection。是否有任何其他可能性可以像上面那样在一个循环中处理两者?而不是-当然-使用if-elseif-clause和两个循环(这不太好)。编辑:针对这些答案。我知道isArray()方法,但在这种情况下是强制转

java - 我应该什么时候返回接口(interface),什么时候返回具体类?

当我用Java编程时,出于习惯,我几乎总是写这样的东西:publicListfoo(){returnnewArrayList();}大多数时候甚至都没有考虑过。现在,问题是:我应该总是将接口(interface)指定为返回类型吗?或者是否建议使用接口(interface)的实际实现,如果可以,在什么情况下?很明显,使用界面有很多优势(这就是它存在的原因)。在大多数情况下,库函数使用什么具体实现并不重要。但也许在某些情况下它确实很重要。例如,如果我知道我将主要随机访问列表中的数据,那么LinkedList会很糟糕。但是如果我的库函数只返回接口(interface),我根本不知道。为了安全

java - 我应该什么时候返回接口(interface),什么时候返回具体类?

当我用Java编程时,出于习惯,我几乎总是写这样的东西:publicListfoo(){returnnewArrayList();}大多数时候甚至都没有考虑过。现在,问题是:我应该总是将接口(interface)指定为返回类型吗?或者是否建议使用接口(interface)的实际实现,如果可以,在什么情况下?很明显,使用界面有很多优势(这就是它存在的原因)。在大多数情况下,库函数使用什么具体实现并不重要。但也许在某些情况下它确实很重要。例如,如果我知道我将主要随机访问列表中的数据,那么LinkedList会很糟糕。但是如果我的库函数只返回接口(interface),我根本不知道。为了安全

java - 为什么抽象方法不能同步?

我正在阅读threadfromCodeRanch说抽象方法不能同步,因为抽象类不能被实例化,意味着没有对象可以锁定。这没有意义,因为抽象类是子类的定义(契约)。同步方法的抽象定义不需要锁,子进程需要。所有抽象标题都表明子必须同步此方法。我对此的逻辑是否正确?如果没有,有人可以解释我为什么错了吗? 最佳答案 关于无法实例化抽象类的评论是垃圾。鉴于它必须是抽象的实例方法,所以肯定有一个可以锁定的引用。抽象类中的具体方法仍然可以引用this。但是,这仍然不意味着抽象类应该能够同步。方法是否同步是方法的实现细节。任何地方都没有将同步指定为声

java - 为什么抽象方法不能同步?

我正在阅读threadfromCodeRanch说抽象方法不能同步,因为抽象类不能被实例化,意味着没有对象可以锁定。这没有意义,因为抽象类是子类的定义(契约)。同步方法的抽象定义不需要锁,子进程需要。所有抽象标题都表明子必须同步此方法。我对此的逻辑是否正确?如果没有,有人可以解释我为什么错了吗? 最佳答案 关于无法实例化抽象类的评论是垃圾。鉴于它必须是抽象的实例方法,所以肯定有一个可以锁定的引用。抽象类中的具体方法仍然可以引用this。但是,这仍然不意味着抽象类应该能够同步。方法是否同步是方法的实现细节。任何地方都没有将同步指定为声

c++ - "data abstraction"到底是什么意思?

数据抽象指的是什么?请提供现实生活中的例子。 最佳答案 抽象有两部分:隐藏从某个角度来看无关紧要的细节确定从某个角度来看确实重要的细节,如果元素拥有这些细节,则认为它们属于相同类。例如,如果我正在设计一个处理库存的程序,我希望能够找出系统中有多少某种类型的元素有库存。从接口(interface)系统的角度来看,我不关心我是从数据库、csv文件、通过SOAP接口(interface)或穿孔卡片的远程存储库获取这些信息的。我只关心我可以说widget.get_items_in_stock()并知道它会返回一个整数。如果我以后决定要以其他