设计模式怎样解决设计问题[1] 寻找合适的对象

面向对象设计最困难的部分是将系统分解成对象集合。因为要考虑许多因素:封装、依赖关系、灵活性、性能、演化、复用等等,它们都影响着系统的分解,并且这些因素通常都是互相冲突的。

寻找合适的类是为了便于你设计出好用的类,包含了3种设计模式:

Composite模式(组合模式),State模式(状态模式)以及Strategy模式(策略模式)

Composite模式(组合模式)

http://www.cnblogs.com/jiese/p/3168844.html

组合模式以树形结构为主,其目的是为了让客户端使用的时候不用区分整体与局部之间的差异,整体与局部的调用方法一致(其实并不好用......)。

State模式(状态模式)

状态模式中,需要定义一个状态虚类,然后将不同状态的实现延迟到继承的子类当中,可以解除处理数据类的耦合度,非常实用。

项目源码:

https://github.com/YouXianMing/StatePattern

Strategy模式(策略模式)

策略模式与状态模式非常相似,不同的地方就在于,策略是一种算法,其目的是为了执行一种算法,不是将一个对象从一种状态改变到另外一种状态,其余使用方法类似,源码请参考状态模式源码

时间: 2024-10-25 19:01:58

设计模式怎样解决设计问题[1] 寻找合适的对象的相关文章

设计模式怎样解决设计问题

设计模式采用多种方法解决面向对象设计者经常碰到的问题,这里给出几个问题以及使用设计模式解决他们的方法. 1.寻找合适的对象 面向对象程序由对象组成,对象包括数据和对数据进行操作的过程,过程通常称为方法或操作,对象在收到客户的请求(或)消息后,执行相应的操作. 客户请求是使对象执行操作的唯一方法,操作又是对象改变内部数据的唯一方法.由于这些限制,对象的内部状态是被封装的,它不能被直接访问,它的表示对于对象外部是不可见的. 面向对象设计最困难的部分是将系统分解成对象集合.因为要考虑许多因素:封装.粒

2.0设计模式怎样解决设计的问题

PS:以下皆为阅读<设计模式-可复用面向对象软件的基础>ISBN:978-7-111-07575-2 的笔记 1.寻找合适的对象 面向对象程序由对象组成.对象包括数据和对数据进行操作的过程,过程通常称为方法或操作.对象再收到客户的请求(或消息)后,执行相应的操作. 客户请求是使对象执行操作的唯一方法.操作又是对象改变内部数据的唯一方法.由于这些限制,对象内部状态是被封装的,它不能被直接访问,它的表示对于对象外部是不可见的. 面向对象设计最困难的部分是将系统分解成对象集合.因为要考虑许多因素:封

【设计模式】使用设计模式来解决设计问题

选择对象 面向对象设计最困难的部分是将系统分解成对象集合.因为要考虑许多因素:封装.粒度.依赖关系.灵活性.性能.演化.复用等等,它们都影响着系统的分解,并且这些因素通常还是互相冲突的. 设计的许多对象来源于现实世界的分析模型.但是,设计结果所得到的类通常在现实世界中并不存在.设计模式帮你确定并不明显的抽象和描述这些抽象的对象.例如,描述过程或算法的对象现实中并不存在,但它们却是设计的关键部分.Strategy模式描述了怎样实现可互换的算法族.State模式将实体的每一个状态描述为一个对象.这些

CIO如何寻找合适的BI工具

前情提要:某制造企业用ERP对日常运营基础数据进行管理,但领导需要的报表还是需要在系统外进行编制.随着公司发展,数据越来越多,报表数量也越来越多,公式越来越复杂.最麻烦的是,当领导从一个报表发现问题时,需要从另外的报表中找原因.很多情况到最后还是拍脑袋做决定,目前想寻找合适的BI工具来解决数据分析和可视化的问题. Gartner组织的2019 CIO Agenda报告显示,综合全球3102名CIO的意见,在IT领域将增加投入的首位是BI/数据分析解决方案(45%).信息化.数字化给企业带来的利好

设计模式之六大设计原则

在上篇博文中提到了开放-封闭原则,没有细谈,这次我们来总结一下设计模式的几大原则. 1开放-封闭原则:是指软件实体(类.模块.函数等)应该可以扩展,但是不可修改. 对原则的理解:开闭原则是最具有理想主义色彩的一个原则,它是面向对象设计的终极目标,下面所要介绍的几个原则可以看成是为了符合开闭原则所作的努力和解决办法.对于开闭原则通俗的理解就是,能不改就不改,能少改尽可能的少改.周所周知,物质是运动的,世界是变化的,想要让一个事物永恒不变是不可能的,所以要想让软件绝对符合开闭原则是不可能的. 2单一

设计模式小结——六大设计原则

设计模式是一套由软件界前辈们总结出的可以反复使用的编程经验,旨在提高代码的可重用性,提高系统的可维护性,以及解决一系列复杂问题.设计模式包括6大设计原则和23种种设计模式.6大设计原则:单一职责原则SRP 应该有却仅有一个原因引起类的变更,即类最好只实现一种功能.高内聚. 单一职责的实现方式是一个职责一个接口. 单一职责适用于类和接口,同样适用于方法,一个方法也应该只做好一件事.里氏替换原则LSP 所有能使用父类的地方必须能透明地使用其子类的对象. 子类必须完全实现父类的方法,如果子类不能完整实

C#使用设计模式和软件设计原则构建应用程序 PartIII

依赖注入 这个原则的要点是什么.为什么你不能对类的实例进行再次硬编码?当我们编码,测试的时候,让我们关注一件很重要的事情.希望你知道单元测试并知道它的重要性.也许在你做任何编码之前你都应该首先设计你的测试,因此你应该很熟悉测试驱动开发.为了定义新功能你应该去写测试,你应该尝试去实现并开始编码直到测试通过.让我们先看看之前的文章的代码. public class DateBasedTaxFactory:ITaxFactory { Customer _customer; ITaxFactory _t

【小话设计模式】面向对象设计原则

1.单一职责原则 单一职责原则的核心思想就是:系统中的每一个对象都应该只有一个单独的职责,而所有对象所关注的就是自身职责的完成.英文缩写SRP  Single Responsibility Principle 单一职责原则-->"高内聚,低耦合",每个类应该只有一个职责,此外只能提供一种功能,而引起类变化的原因应该只有一个.在设计模式中,所有的设计模式都遵循这一原则. 优点: 可以降低类的复杂度: 提高类的可读性,提高系统的可维护性: 变更引起的风险降低. 2.里氏替换原则 里氏

面向对象设计步骤二-------指定属性的类型和可见性,分配职责(GRASP),消息驱动,设计模式进行局部设计

增加遗漏的属性,指定属性的类型和可见性: 在面向对象设计阶段,需要对每个类进行详细设计,不全过程中遗漏的属性,并且确定每个属性的数据类型,指定每个属性的可见性:属性的可见性指外部对象对属性的访问权限,一般包括私有,保护和共有几种类型: 在实际开发中,除了那些比较简单且不常发生变化的属性可以直接暴露给客户以外,其他属性最好设置为私有或者保护并且最好都能用GetXXX()和SetXXX()等访问方法封装一下 分配职责,定义执行每个职责的方法: 职责:是一个类或者类型的契约或者义务 面向对象系统中的类