06 2012 档案

摘要:问题:在面向对象的软件设计中,经常需要将一些现存的对象放在新的环境中或与新的对象一起工作,但是他的接口与新环境要求的接口不同,而双方又都无法改变。定义:适配器模式 也称包装样式或者包装,将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。意图:定义一个Adapter角色,将一个已存在的Adaptee类,通过继承或包装的手段,让他与现有的类实现同一接口的办法,转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。参与者:•目标(Target)角色:这是客户所期待的接口。目标可以是具体的或抽象的. 阅读全文
posted @ 2012-06-29 17:49 ejiyuan 阅读(1599) 评论(1) 推荐(0) 编辑
摘要:问题:在面向对象的软件设计中,经常会遇到一个(或一系列)对象,对象本身的数据存储与对象的操作耦合在一起。例如一个对象有add(),edit(),delete()方法,这样对象支持的方法很难扩展,如果需要加入update()就必须修改代码,客户端与对象也是紧耦合的。命令模式是将一类对象的功能(行为,功能)抽象成一个命令对象,客户端在使用的时候,只与该命令对象打交道,而不用与对象打交道,分离命令的请求者和命令的执行者,降低了耦合性,可以使用不同的请求对客户进行参数化提高了程序设计的灵活性。定义:命令模式(Command)模式,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请. 阅读全文
posted @ 2012-06-28 17:02 ejiyuan 阅读(3490) 评论(3) 推荐(3) 编辑
摘要:问题:在面向对象的软件设计中,经常会遇到一些聚集对象,按一定的顺序的遍历访问问题,这个遍历算法究竟应该由谁来实现呢,聚集对象本身?这样聚集对象承受了过多的功能,不仅要维护聚集对象内的元素,还要提供遍历自身的接口,而且由于遍历状态保存的问题,不能对同一个容器对象同时进行多个遍历,这不符合单一职责原则。如果将遍历算法交给客户端,会将容器的内部细节暴露无遗,而且客户端与聚集对象高度耦合。分离了集合对象的遍历行为,将遍历算法交给这个迭代器角色来完成,可以很好的避免容器内部细节的暴露,而且也使得设计符合“单一职责原则”,另外迭代器模式抽象了具体迭代器角色,可以通过对一个抽象迭代器多个集成可来完成同一聚. 阅读全文
posted @ 2012-06-27 18:28 ejiyuan 阅读(1462) 评论(0) 推荐(1) 编辑
摘要:问题:当我们定义一系列的算法,怎么能使得算法为应对不同的业务需要能自由的动态替换而又不影响到客户端的使用,并且算法的增减、修改都不会影响环境和客户端。定义:策略模式定义了一系列算法,把它们一个个封装起来,并且使它们可相互替换。该模式可使得算法能独立于使用它的客户而变化。意图:Strategy模式是行为模式,正因为他是一种行为模式,所以他不是用来解决类的实例化的,跟创建什么样的产品没有关系,此模式解决的问题是把一个系列完成相同工作,却实现不同的算法(行为)包装到一系列的策略类里面,使得它们可以相互替换,提供一个访问接口,由客户端决定在什么情况下使用什么具体策略,来完成某一功能。并可以自由的添加. 阅读全文
posted @ 2012-06-26 18:13 ejiyuan 阅读(1711) 评论(0) 推荐(0) 编辑
摘要:问题:在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,并提只有一个全局访问点,才能确保它们的逻辑正确性、以及良好的效率。定义:单例模式也叫也叫单件模式是一种对象创建模式, 保证一个类仅有一个实例,并提供一个该实例全局的访问点。这个类称为单例类。意图:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式有三个要点:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例.参与者: •单例类:确保类只有一个实例,而且自行实例化并向整个系统提供这个实例。UML图:实例说明:诺基亚手机工厂诺基亚手机工厂,可以生产多款手. 阅读全文
posted @ 2012-06-25 15:45 ejiyuan 阅读(764) 评论(0) 推荐(1) 编辑
摘要:问题:Factory Method模式是为一类对象提供创建接口或延迟对象的创建到子类中实现。但是,我们在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作,同时由于需求的变化,这“一系列相互依赖的对象”也要改变,如何应对这种变化呢?Abstract Factory模式是为创建一系列相关或依赖的对象提供创建接口(AbstractFactory),将一组产品的创建封装到一个用于创建对象的类(ConcreteFactory)中(形成一个系列),维护这样一个创建类总比使用Factory Method维护n多相关对象的创建过程(逻辑)要简单的多,而且Factory Method,没有办法保证“一. 阅读全文
posted @ 2012-06-21 18:21 ejiyuan 阅读(1843) 评论(1) 推荐(4) 编辑
摘要:问题:简单工厂模式比较适用于事先已经考虑到的可能出现的算法,来构造工厂类实现,如果需要添加新的类,则就需要改变工厂类了,违反开闭原则,简单的说,简单公共适应与业务变化不是很剧烈的场景下如,审批业务,设计时可以判断到的只有“部门经理审批”,“总裁审批”不会过几天又要加入“组长审批”,去修改工厂类,相对来说变化不是很剧烈的。在软件设计中经常面临着“某个对象”的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口。如果我们使用简单工厂,这样会不断地修改工厂类,应对业务变化,违反开闭原则,另外因为实例化产品的判断逻辑在工厂类中,工厂类会变的越来与臃肿。定义:工. 阅读全文
posted @ 2012-06-20 17:08 ejiyuan 阅读(4504) 评论(4) 推荐(1) 编辑
摘要:问题:为了满足一种业务需要需要多个算法,(如:审批业务,有部门经理审批,总监审批,总裁审批...)。因为是同一类业务处理,所以我们经常会抽象出这些算法的公共属性和方法以形成抽象基类或者接口,这样我们可以通过声明一个指向基类(或接口)的指针来指向实际的子类实现,达到了多态的目的。因为要为每一种算法在使用之前都要先创建一个实例,然后才能使用。这里就出现的一个问题n多的子类继承自抽象基类,我们不得不在每次要用到子类的地方就编写诸如new ×××;的代码 。这个实例化工作有谁来做呢,如果交给客户端去做,客户端势必要进行相应的逻辑判断,来决定调用那一算法去实例化相应的子类对 阅读全文
posted @ 2012-06-19 17:39 ejiyuan 阅读(1225) 评论(1) 推荐(0) 编辑

点击右上角即可分享
微信分享提示