我知道当时的反应
而且我也意识到合成比继承更重要
但在某些情况下,继承确实起到了很好的作用。继承层次结构的不正确使用导致了与重用相关的所有问题
以以下控件为例
Button/Textbox/Combobox/ListBox/Grid etc.
通常,它们被实现为
public class Control
{
...
}
public abstract class TextBoxBase : control
{
....
}
public class TextBox : T
我读过所有关于为什么要创建一个类以及类似“在需求中查找名词”之类的书,但这似乎还不够。我觉得我的课很乱。我想知道是否有一些指标或东西,我可以比较我的类,看看是否有良好的设计。如果不是,谁是最受尊敬的OO大师,我可以从中获得正确的课堂设计技巧?我认为对象设计既是科学也是艺术。理解如何设计干净优雅的课堂需要时间和实践。如果你能举一个你设计的一个简单类的例子,你会对它感到不满意,这样用户就可以进行评论并给出建议。我不确定在你已经阅读的文本之外还有什么一般性的答案。我个人知道的最受尊敬的OO大师是Sta
在将模型放入数据库之前,我们使用spring验证来验证模型。
比如说
订单-->订单项
在将订单保存到数据库之前,OrderValidator会对其进行验证
OrderValidator验证委托给OrderItemValidator的订单,以验证订单中的OrderItem。因此,本例中的层次结构或验证器如下所示
OderValidator-->OrderItemValidator
验证器和模型中都存在订单包含orderItems的知识
我想知道这是否是隐式重复的标志(类似于代码气味)。
如果是,
这可能是一个新手问题,因为我是设计模式的新手,但我正在研究模板方法和策略DP,它们看起来非常相似。我可以阅读定义、检查UML并查看代码示例,但对我来说,策略模式似乎只是使用模板方法模式,但您只是碰巧将其传递到和对象(即组合)
就这点而言,模板方法似乎只是基本的OO继承
我是否遗漏了他们分歧的一些关键方面?我是否遗漏了一些模板方法,使其不仅仅是基本继承
注意:之前有一篇关于这个()的文章,但是更多的是关于何时使用它,这有助于我获得更多的信息,但是我希望我对模式本身的想法是有效的 基本上都可以归结为
在启动一个新的应用程序时,有哪些方法可以决定您需要什么对象、它们应该做什么以及它们应该如何相互交互
这是白板的工作,还是只需开始编码并根据需要移动内容就更容易了?这应该或多或少“自然”地符合要求
您是否对应用程序的功能、范围等有深入的了解
这实际上取决于您所谈论的项目的规模:对于团队建设商业软件,必须采用的方法和严格程度与个人项目不同
也就是说,以下是一些一般提示:
1) 在您选择的媒介(我喜欢白板)上,开始列举用例或用户故事。继续,直到你觉得你已经得到了最重要的/包含80%的覆盖
2) 当您对
我最近一直在学习UML,并在类之间用普通的普通箭头绘制简单的图表,但我知道这还不够。还有很多其他箭头:概括、实现等,它们对图表读者有意义
是否有一个很好的资源可以解释每个箭头(普通、普通、点状、钻石填充、钻石)
最好能有一些代码示例。我最喜欢的UML“备忘单”是Martin Fowler的。这是我读过的唯一一本推荐他的书。这里是简化教程:
有关更多信息,我建议获取一些文献。以下是Visual Studio 2015文档中的一些解释:
UML类图:参考:
5:关联:两个量词成员之间的关系
5a
在这种简单的情况下,什么是好的设计:
比如说,我有一辆基类汽车,它的加油方法是FillTank(Fuel)where
燃料也是一个基本类,有几个叶类,柴油,乙醇等
在我的leaf汽车类柴油车上。只加注油箱(燃油)某种类型的燃油
是允许的(没有意外:))。现在我关心的是,根据我的界面,每辆车都可以加注任何燃油,但我认为这似乎是错误的,在每个FillTank()实现中,检查输入燃油的类型是否正确,如果没有,则抛出错误或其他错误
我怎样才能重新设计这样的案例,使之更加准确,甚至可能吗?
如何设计一个基
我正在为我的面向对象设计课做家庭作业,而Scala的伴生对象却给我带来了麻烦。我在一些地方读到过,同伴对象应该可以访问同伴类的私有方法,但我似乎无法让它工作。(请注意,作业的内容与实现二叉搜索树有关,所以我不仅仅是在问答案……)
我有一个对象,该对象应该创建我的私有类的一个实例,BSTALAS(Bst也在Atlas对象中定义,为了清晰起见,将其取出):
但是当我开始编译时,我得到以下错误:
问题23.scala:15:错误:方法
无法在中访问helpFocusRoom
阿特拉斯,阿特拉斯
a、
我试图让MATLAB比它(对我来说)更有用,我一直想解决的问题之一是更好的类构造函数。我希望有以下界面:
MyClass.new(some_args).method1;
# instead of classical:
obj = MyClass(some_args);
obj.method1;
我可以通过定义一个静态方法new轻松实现这一点:
classdef MyClass
methods
function obj = MyClass(varargin); end
fu
假设我们有一个Order类和OrderManagerService类
Order类:[某些状态和作用于该状态的方法]
项目[]
地位
OrderManagerService类:[没有状态。只有以下静态方法]
创造秩序
获得订单
问题:假设我们在后面使用关系数据库。我们的目标是更新订单状态。嗯,数据库中的状态需要更新。我关心的是updateStatus方法放在哪里
那么我应该调用OrderManagerService.getOrder,调用Order.updateStatus吗
或者创建一个新方法
从
据说builder模式适合比萨饼的例子
为什么不是装饰师?
将奶酪、意大利香肠、培根作为基础比萨的附加装饰
是因为奶酪/意大利香肠必须分开制作吗。我不认为,它们需要单独建造,因为它们可以是现成的
请澄清。
我也在寻找一个很好的现实世界中的装饰模式的例子,以及为什么它适合这个特定的例子。谢谢。你混淆了两件截然不同的事情。GoF将Builder分类为一种创造性模式,而Decorator是一种结构模式。其描述如下(Gamma等人,第1页):
Builder(97)将复杂对象的构造与其表示分离,以便
标签: Oop
contractoperationsystem
我对在CRUD类操作上应用Larman的系统操作契约(应用UML和模式一书中的OO分析)有些困惑。更确切地说,我对后条件部分感到困惑
例如,如果我的CRUD系统操作如下所示:
createEmployee(employee:Employee),
readEmployee(employeeId:int),
updateEmployee(employee:Employee),
deleteEmployee(employeeId:int)
例如,readEmployee系统操作或其他操作(如s
在我的应用程序中的几个不同的地方,我需要取一个Seq[SalesRow]并返回一个Map[String,SalesRow],其中字符串是一个国家的名称
我需要在几个地方使用这个。例如,我获取所有SalesRow的列表,并按国家对全球销售额进行细分。但在其他地方,我想先按月份再按国家(因此Map[month,Seq[SalesRow]]]变成Map[month,Map[String,Seq[SalesRow]]])-在其他地方,我想先按天再按国家进行细分
我的问题是:我应该把(少量)逻辑放在哪里,
是否可以在GUI中创建一个对象,通过将其“位置”属性设置为光标位置,我可以通过光标位置(单击时拖动)来定义该对象的位置?我应该使用什么功能?您可以在GUI中创建一个不可见的轴,并在其中绘制您想要的任何对象。然后,可以使用“从文件交换”来允许将对象拖动到整个位置 您可以使用该功能打开GUI对象的移动和调整大小。然后,您可以用鼠标单击并拖动对象。就这么简单:
set(hObject,'ButtonDownFcn','selectmoveresize');
不那么简单的是,如果您的GUI对象是,在这
我在读一篇由ASF撰稿人撰写的文章,他简要地提到深度克隆对象的“老Java技巧”是序列化对象,然后将其反序列化回另一个对象。当我读到这篇文章时,我停了下来,想“嘿,这太聪明了。”不幸的是,这篇文章的主题既不是深度克隆,也不是序列化,因此作者从来没有给出他所说的例子,在线搜索也没有从这方面撤回任何东西
我不得不假设,我们谈论的是这样的事情:
public class Dog implements Serializable
{
// ...
public Dog deepClone
我在我的项目中使用DDD体系结构,我需要创建一个类来生成一个用于另一个类的GUID
生成我的GUID的此类是基础结构服务还是基础结构帮助程序
我如何知道一个类何时是助手或服务?服务能够服务于一些客户机,通常这是一个特定的实体。
Helper提供了一组方法,这些方法通常是
从我的观点来看,如果提供GUID生成功能的类存储或使用此GUID以满足进一步的需要,那么它是一个服务类,否则我会说它是一个帮助程序,因为它只是按原则工作,即do和forget/generate和forget
通常,如果您可以将方
我正在尝试为我的公司建立一个调度应用程序的模型,可以使用一些建议。如果合适的话,我想采用领域驱动的设计
该领域由一个展示对象组成,该展示对象代表一个我们可能正在推广我们产品的贸易展览、展览或会议。它有开始和结束的日期和时间、议程、发言人名单、地点等。相当多的工作可以通过展会来完成,例如分配发言人、注册与会者、取消等
我们通常作为一个或多个营销活动的一部分参加展会。活动还包括开始和结束日期以及其他信息,以及我们将参加该活动的节目列表。我们可能会在一个特定的展会上推广多个活动
可以从活动中添加或删除
在关于的讨论中,他认为这是我们今天使用的包罗万象的框架的一个很好的替代方案
他似乎对打字课最感兴趣:
我们可以使用类型类之类的结构来定义特性(比如持久性、内省、,
标识,打印)与类和
接口
我对类型类作为“类型的类型”略知一二,但我不确定它们将如何应用于前面提到的问题:持久性、打印
有什么想法吗?我最好的猜测是通过默认方法重用代码,通过将类型类实现从类型本身分离出来进行正交定义
基本上,在定义类型类时,可以为方法定义默认实现。例如,Haskell中的Eq(equality)类将/=(不相等)定义
我有两门课,Plant和GeneratorGenerator创建一个向量,并通过notify()进行广播,后者Plant监听。下面是classdef。请注意,我没有包括实际的数据生成方法,因为它与我的问题无关
classdef Plant < handle
properties
Listener
end
methods
function ListenerCallback(obj, data)
#% Per
假设我有一些代码
House = function () { /* constructor */ }
House.childPlay (childId) { ... }
House.childLearn (childId) { ... }
House.childEat (childId) { ... }
因此,隐式地说,这个房屋对象“有”子对象,但它不一定有子对象。这就是我想知道的。不断传来传去的孩子们似乎有点可疑。House是否应该拥有一组子对象
House.Child.play
我听说了参数declaraton的两个语法。第一个用于MulT,另一个用于MulV:
$MathObject = (New-Module {
function MulT([int]$Factor1, [int]$Factor2) {
$Factor1 * $Factor2
}
function MulV{
param(
[int]$Factor1,
[int]$Factor2
这是一个设计问题,我将尽可能清晰地描述它,但我不确定我所面临的问题应该怎么称呼
我正在制作一个视频游戏,设置和玩这个游戏需要多个步骤。我想把每一步都用某种物体包裹起来,以保持一切清洁
我选择将游戏流程分为会话、回合和繁殖。游戏的会话是最高范围级别,您可以配置哪些玩家处于活动状态(通过加入屏幕),然后继续开始一轮。您可以在一个会话中播放多轮,每轮都将继承全局会话数据。同样,您可以在每轮中多次死亡和重生,从轮和会话中继承数据
想象一下什么是自由的
第1次会议
第2次会议
A轮
B轮
繁殖1
繁
我知道接口不能包含方法体,我们可以在其他类中实现,并可以编写自定义逻辑。但同样的事情也可以通过对类使用继承来实现。那么为什么界面会出现在画面中呢。如果我们想覆盖任何方法定义,我们可以在类继承中执行,并可以编写自定义代码。接口的确切用途是什么?一个原因是一个类可以实现多个接口,但只能从一个类派生
另一个是,层次结构上完全不相关的类可以实现相同的接口。在没有接口的静态类型语言中,人们通常可以观察到非常深层的继承层次结构,这些继承层次结构的创建仅仅是因为它们不能简单地实现接口,并且必须强制派生不相关的
标签: Oop
immutabilityinvariants
对于OOP,不变和不变是同义词吗
我有一种模糊的感觉,即存在差异,但我不确定
我认为不可变通常应用于对象,而不变通常应用于属性/值
在这两种情况下,对象或变量将保持未修改且“true”,因此它们看起来非常相似
感谢您的反馈,因为我正在努力提高我对这些术语理解的准确性,我想我忽略了细微的差异 不确定这些定义是否正确,但对我来说,“不可变”意味着数据结构不会改变,而“不变”是一个不变且保持为真的设置条件(但它与特定的数据实例无关)
现在,使用不可变数据结构有助于确保不变量保持为真,因为它们不会发生变
我一直在研究和寻找一个问题的答案,我怀疑通过更好地理解设计模式可以解决这个问题。我认为问题在于我是一个自学成才的程序员,人们似乎倾向于认为自己熟悉很多深奥的术语;我在维基百科的螺旋图中试图确定一些短语的含义。
也就是说,关于编码/结构问题
实际上,在我开始之前,我应该指出,在我的问题中,我很可能对代码的结构做出了未知的假设。如果是这样的话,人们能提出我建议的替代方案吗?我真的很感激学习如何更好地编写代码,而不是简单地被告知我做错了。
好的
假设我们有一个房间类,它有四面墙,一个天花板和一个地板。
我最近从Robert Martin的“干净代码”(第37-39页)中了解到,switch语句在OOP中是不好的
但是考虑一下这个场景:我正在编写一个游戏服务器,从客户端接收消息,其中包含一个指示玩家动作的整数,比如移动、攻击、选择项目……等,将有30多个不同的行动。当我编写代码来处理这些消息时,不管我想到了什么解决方案,它都必须在某个地方使用switch。如果不是switch语句,我应该使用什么模式?我想到了这个模式
策略模式旨在提供一种方法来定义一系列算法,将每一种算法封装为一个对象,并使它们
根据维基百科
依赖关系是一种关系,表明一个元素或一组元素的规范或实现需要其他模型元素。[1]该元素依赖于称为供应商的独立元素
那么,这和单向关联不一样吗?
当一个类中的操作使用另一个类的对象作为其参数时,我们是否使用依赖关系
单向关联和依赖有何不同。
任何示例都会非常有用关联意味着两个关联实体在语义上是链接的。依赖项只声明存在一个。。。嗯,某种依赖。所有关联都是依赖项,而依赖项实际上并不意味着关联。例如,类“A”依赖于类“B”,如果它有一个方法,该方法接受“B”,并将其作为参数传递给另一个类中的
标签: Oop
controllermarionette
在我的应用程序中,每个模块都有控制器,充当中介。
什么地方更适合实例化它们:
在主控制器中,如下所示:
App.MainController = Marionette.Controller.extend({
doSomething: function(){
var controller = new App.Module1.Controller();
controller.doSomething();
...
},
doSo
类的实例和对象之间的基本区别是什么?我总是搞不清楚它们到底有多不同。实例是内存中的一个对象。基本上,您可以创建对象并在使用它们时实例化它们
这是一篇关于类、对象和实例的好文章,他说的是Java,但它适用于所有面向对象编程:
人和你有什么区别?
“人类”是一个类(有很多人类),但“你”只是一个类(你是人类的对象)。
什么是实例?有些函数不仅适用于对象,也适用于类。示例:human::isMammal()==true,human::isarchnid()==false。您不需要类human的对象来调
我有一个名为Contact的类和一个名为Account
我有一个方法叫做publicstaticaccountgetaccount(contactc){…}
这种方法最好放在哪里?我应该看什么样的设计模式
A) 接触类
B) 使用Account类
C) 使该方法在两个类中都可访问
D) 在其他地方?这取决于从联系人到帐户的查找是如何进行的,但我会投票支持将其放入一个使用存储库模式的新类中
Repository repo = ...
Account account = repo.getAccou
我们如何有效地将面向对象性、可扩展性和模块性应用于简单程序?如果是应用程序,我可以识别实体以及它们之间的关系。当涉及到简单的程序时,我无法做到这一点
请帮助我在链接中实现柏林时钟程序的面向对象性、可扩展性和模块化
提前谢谢。以下是我将如何解决这个问题
面向对象性
首先,找出与问题有关的所有实体。然后将它们解释为类。例如,在这种情况下,时钟基于不同的灯光及其相互通信来显示实际时间。
因此,我认为光是一个抽象类,也会继承来自这个抽象光类的不同的其他光,例如红光、YelloLight等,并扩展它们。
在类uvm_资源_池定义中创建实例(对象)rp的以下代码(第2行)的含义是什么
class uvm_resource_pool;
static local uvm_resource_pool rp = get();
// Function: get
//
// Returns the singleton handle to the resource pool
static function uvm_resource_pool get();
if(rp == nu
我的自制OO设计有一个特别的问题:
Entity = {}
function Entity:new(o)
o = o or {}
return setmetatable(o, {__index = Entity})
end
function Entity:init() end
function Entity:think() end
function Entity:spawn()
--put in entity pool and begin drawing/logic
self:i
对于冗长的例子,我很抱歉,但是我最近遇到了这种类型的软件设计问题,并且一直在考虑它。不确定是否有一个术语,因此我将给出两个一般示例来给出一个想法:
例1:你在做一个RPG游戏,你有一个角色的职业。该角色对游戏世界的反应会根据你的穿着/持有、分配的技能、基本上你的对象的内部状态而变化
假设游戏中有以下物品:
再生环:允许你的角色随着时间的推移恢复生命值
鬼鬼祟祟的运动鞋:增加鬼鬼祟祟
魔镜:反射%的伤害
Doofy眼镜:突出工艺资源
例2:你有一辆丰田花冠。它有不同的配置,但都是丰田花冠。A
我想在我的一个项目中使用命令模式,我必须进行多个REST调用。我已经根据它所属的模块封装了web方法调用。与XYZDataManager类似,它包含与XYZ模块相关的所有web方法调用
话虽如此,命令模式将如何适应这里?我不想为每个web方法调用创建命令类。我想保留上面提到的封装
我想到的一个想法是在每个具体的命令类中创建一些类似于enum的RequestType。然后,我们在命令接口中有execute(RequestType)方法。每个具体命令都相应地实现execute(RequestType
我不太确定这个问题是属于这里还是stackexchange上的另一个社区,如果是后者,我找不到合适的社区,我很高兴得到一个提示
我目前正在用Java编写一个小游戏(roundbased-无线程),我想知道:
如果一个对象被其他几个对象所知,这是一种不好的做法吗
在我的例子中,我想知道是否应该创建一个对象o,然后将它作为构造函数参数传递给其他几个后来创建的对象
它确实有效,但我想知道,一般来说,这是否应该做而不是不做
有人有答案吗?当然有。这是oop世界中的正常情况。这种用法的一个简单示例是依赖项
我试图在我的MVC程序设计中使用存储库,但我遇到了一个如何最好地构造它们的问题
例如,假设我有一个objectusers,我有一个UserRepository,它具有像getUser(intid),saveUser(Dal.User model)等功能
所以,如果在我的控制器中有EditUser,我想显示一个视图,其中包含一个用户详细信息输入表单。所以我可以这样做:
User user = _userRepository.getUserDetails(userId);
好处是,我的控制器只处理
在阅读有关singleton的文章时,我发现以下解释是使用singleton的原因:
由于这些对象方法不改变内部类状态,因此
可以将此类创建为单例
这到底意味着什么?当您认为某些方法没有改变内部类状态时?如果它是一个获得者?是否有人可以为使用不改变其内部状态的方法的类提供代码示例,从而可以作为单例使用,以及不应该作为单例使用的类
通常,当人们解释单例模式时,他们使用DB连接类作为示例。这对我来说很有意义,因为我知道在一个应用程序实例中我只希望有一个db连接。但是,如果我想在实例化DB conne
互联网上有大量的文章和博客文章告诉我们可变对象是不好的,我们不应该使用它们,因此我们应该让所有的对象都是不变的
我对此没有任何反对意见,只是这个话题已经走得太远了,以至于有些人可能会“上当受骗”,认为永远不应该使用可变对象
什么时候我们必须使用可变对象?不使用可变状态无法解决的常见问题有哪些?至于你的恐惧,这很常见。每一个概念都被一些人认为意味着,无论出于什么原因,其他任何事情都不应该做。
这些人试图使需求符合他们的意识形态,而不是相反(也就是说,他们不务实)
何时使用可变项?基本上,当你觉得它
我想在OOP
我是这么想的:
其中,我定义了一个env,并在该环境中创建了一个值为10的变量
我还希望能够调用该环境中的值。比如说
(get-value env 'x)
> 10
我最能理解的是它涉及到闭包,但我不确定从哪里开始实现这一点最简单的方法是使用alist。上述变量和获取值可定义如下:
(define (variable name value env) (cons (cons name value) env))
(define (get-value name env) (con
我真的很挣扎,在网上找不到关于它的任何东西——或者我可能不明白网上写的是什么。我正在尝试创建一个堆栈并使用ibut,但我甚至无法创建它
我在一个过程中创建它,我希望堆栈包含整数。我已经尝试了以下步骤,我只是得到了下面的红线,它们都在过程的var部分:
genericstack:TObjectStack;
以及
通用策略:TStack
而且两者都没有在设置堆栈方面起作用。我只是在下面画了一条红线。您可以在官方网站上查看示例代码:
有用的一个:
而且
一个片段也许可以作为你的答案:
{
Thi
在Python中,我希望这样做:
class foo:
def __init__(self):
self.x = self
否则,现在对象本身就是一个参数。如何使用common lisp进行此操作
(defclass mn ()
((pai :accessor mn-pai
:initarg :pai
:initform self)))
CLOS没有“this”或“self”的概念,因为通过使用泛型函数,正在处理的任何实
我得到一个错误,您不能在类定义之间使用当前语句。。。。和ENDCLASS。下面是ABAP类的示例
CLASS c1 DEFINITION.
PUBLIC SECTION.
STATICS static TYPE i VALUE 10.
METHODS add_one.
ENDCLASS.
CLASS c1 IMPLEMENTATION.
METHOD add_one.
static = static + 1.
ENDMETHOD.
在我的项目中,我在不同的模块中定义了几个goops类(因此在不同的文件中)。我无法理解如何正确地从模块导出类(及其附件)
这就是我试过的。正如我在评论中所想的那样,我还尝试每次导出“slot-of-a”,但它不起作用
;;;module-a.scm
(define-module (module-a)
#:use-module (oop goops)
#:export (<class-a>)) ;Have I to export "slot-of-a" too?
(defin
我正在阅读开发人员的最佳实践,发现一个建议是
使界面易于正确使用,避免错误使用
任何人都可以用最少的示例代码来描述以理解原理。我曾尝试在互联网上搜索,但没有找到任何例子
class Account{
void process(){}
}
interface IBankAccountService {
boolean check(Account acc);
void process(Account acc);
}
class ScbAccountService imp
是否有任何设计模式使用动态\u cast的方式,如使用开关盒语句
实际上,当我像这样使用dynamic\u cast时:
if (auto *type1 = dynamic_cast<Foo *>(&base)) {
} else if (auto *type2 = dynamic_cast<Bar *>(&base)) {
} else {
throw WtfException();
}
if(自动*type1=dynami
在这种情况下,我们可以说a.method1();抽象是指只提供功能的抽象
而不是如何实施
这可能很傻:-)但我也很困惑,因为它也是这样。
我在互联网上和任何地方都读到,它说只有汽车/电话/等提供了功能,而不是实现(如何设计)的细节。我们能在没有接口和抽象类的情况下实现抽象吗
class A
{
void method1()
{
System.out.println("Hi Everybody...!");
}
}
Class B
{
public static voi
标签: Oop
procedural-programming
Robin C.Martin的“干净的代码”中有一节是关于过程编程和面向对象编程的,其中有一些我无法理解的语句。
有人愿意进一步详细解释这些陈述背后的思想过程吗
声明如下:
过程代码(使用数据结构的代码)可以轻松地添加新函数,而无需更改现有的数据结构。另一方面,OO代码可以轻松地添加新类,而无需更改现有函数
补语也是正确的:
由于所有函数都必须更改,因此过程代码很难添加新的数据结构。OO代码很难添加新函数,因为所有类都必须更改
用于证明此语句的代码示例如下所示
程序代码示例:
public cl
安静的一段时间以来,我一直在努力提高我的algo技能,因为这是一项要求,需要通过谷歌、亚马逊等公司的面试。但最近,我在亚马逊的面试中遇到了关于面向对象编程概念的问题。作为一名C语言程序员,我对oops知之甚少。任何帮助,如好书,链接,以提高这些技能将不胜感激。提前感谢。阅读开始真正理解OOP中的设计模式解决方案。我从Tim Budd的第一版《设计模式简介》开始
面向对象编程”。它与语言无关,所以我学习的是概念,而不是实现
现在,问题已经解决。一旦你掌握了OO概念,我将阅读Robert Marti
你有一个页面类。这个类自然拥有处理单页对象的所有方法和变量,包括create()、update()、delete()等等
从OOP体系结构的角度来看,对于该对象组处理大量操纵器的最佳实践是什么
大量操作,如:listAllPages()、getRecentPages()、getTop10Pages()、deleteAllPagesFromAuthor()等
几点要考虑:
因为我们处理的是乘法,所以将这些方法放在类中是没有意义的。。。毕竟,一个页面操纵所有其他页面是不合逻辑的
另一方面,将所有这
1 2 3 4 5 6 ...
下一页 最后一页 共 67 页