可以工作的类

类的接口应提供一致的抽象。很多问题都是由于违背该原则而引起的。

类的接口应隐藏一些信息--如某个系统接口、某项设计决策、或一些实现细节。

包含往往比继承更为可取--除非你要对“是一个/is a”的关系建模。

继承是一种有用的工具,但它却会增加复杂度,这有违于软件的首要技术使命--管理复杂度。

类是管理复杂度的首选工具。要在设计类时给予足够的关注,才能实现这一目标。

时间: 2024-10-28 21:08:35

可以工作的类的相关文章

《代码大全》学习笔记 可以工作的类

第6章 可以工作的类 //针对如何创建高质量的类,提供一些精辟的建议. 类的基础 1.类的基础:抽象数据类型 要理解面向对象编程,首先要理解ADT. 2.使用ADT的益处 可以隐藏实现细节:改动不会影响到整个程序:让接口能提供更多信息:更容易提高性能:让程序的正确性更显而易见:程序更具自我说明性:无需在程序内到处传递数据: 3.使用ADTs的指导建议: 把常见的底层数据创建为ADT并使用这些ADT,而不再使用底层数据把文件这样的常用对象当成ADT简单的事物也可当作ADT不要让ADT依赖于其存储介

MVC+EF 理解和实现仓储模式和工作单元模式

MVC+EF 理解和实现仓储模式和工作单元模式 原文:Understanding Repository and Unit of Work Pattern and Implementing Generic Repository in ASP.NET MVC using Entity Framework 文章介绍 在这篇文章中,我们试着来理解Repository(下文简称仓储)和Unit of Work(下文简称工作单元)模式.同时我们使用ASP.NET MVC和Entity Framework 搭

C++ Primer 学习笔记_56_类与数据抽象 --消息处理示例

复制控制 --消息处理示例 说明: 有些类为了做一些工作需要对复制进行控制.为了给出这样的例子,我们将概略定义两个类,这两个类可用于邮件处理应用程序.Message类和 Folder类分别表示电子邮件(或其他)消息和消息所出现的目录,一个给定消息可以出现在多个目录中.Message上有 save和 remove操作,用于在指定Folder中保存或删除该消息. 数据结构: 对每个Message,我们并不是在每个Folder中都存放一个副本,而是使每个Message保存一个指针集(set),set中

在MVC程序中,使用泛型仓储模式和工作单元实现增删查改

在这片文章中,我将自己动手为所有的实体:写一个泛型仓储类,还有一个工作单元. 工作单元的职责就是:为每一个实体,创建仓储实例.仓储(仓库)的职责:增删查改的功能实现. 我们将会在控制器中,创建工作单元类(UnitOfWork)的实例,然后根据实体,创建仓储实例,再就是使用仓储里面的方法,做操作了. 下面的图中,解释了,仓储和EF 数据上文的关系,在这个图里面,MVC控制器和仓储之间的交互,是通过工作单元来进行的,而不是直接和EF接触. 那么你可能就要问了,为什么要使用工作单元??? 工作单元,就

C#在工作线程刷新主界面控件状态小结,单例模式、委托

今日项目开发中需要在服务器界面实时显示客户端连接状态,使用C#的反射机制解决了问题.由于项目比较复杂,现结合一个小例子,对使用C#委托反射机制刷新主界面上的控件状态进行简单小结,希望对新手有所帮助. 一.新建一个C# winform工程:Form_MainUI,界面布局如图1. 代码如下: 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data;

2016-08-08 类

构造方法:方法名与类名相同,或__construct()  析构方法:__destruct()构造方法在类实例化时自动执行,用来做初始化工作(初始化类的属性)析构方法在类销毁时自动执行,用来释放内存 类中属性或方法的几个作用域: 类中                        子类                              类外public                                √                              √    

UML 边界类、控制类、实体类

来源:http://bbs.csdn.net/topics/300192417 UML中类有三种主要的版型:边界类.控制类和实体类.引入边界类.控制类及实体类的概念有助于分析和设计人员确定系统中的类. 边界类位于系统与外界的交界处,窗体.报表.以及表示通讯协议的类.直接与外部设备交互的类.直接与外部系统交互的类等都是边界类.通过用例图可以确定需要的边界类,每个Actor/Use Case对至少要一个边界类,但并非每个Actor/Use Case对要唯一的边界类. 实体类保存要放进持久存储体的信息

Adapter(适配器)-类对象结构型模式

1.意图 将一个类接口转换成客户希望的另外一个接口.Adapter模式使那些原本不能一起工作的类,可以一起工作. 2.别名 包装器 Wrapper. 3.动机 一个应用可能会有一些类具有不同的接口,并且这些接口互不兼容,可以专门定义一个类,用来适配互不兼容的类. 4.适用性 你想使用一个已经存在的类,而它的接口不符合你的需求. 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类协同工作. 你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口.对象适配器可以适配

Objective-c 05 类别 类扩展 委托 非正式协议 协议 代码块 并发性 队列

类别 为已经存在的类添加行为时,通常采用创建子类的方法,不过有时子类并不方便, 比如:创建NSString的子类,但是NSString实际上只是一个类簇的表面形式.因而为这样的类创建子类会非常困难.在其他情况下, 也许可以创建它的子类,但是用到的工具集和库无法帮你处理新类的对象的.例如:当使用stringWithFormat:类方法生成新字符串时,你创建的 NSString类的新子类就无法返回.   利用Objective-C的动态运行时分配机制,可以为现有的类添加新的方法.这些新的方法在Obj