资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
设计模式 抽象模式抽象模式定义:为创建组相关或相互依赖的对象提供个接,且需指定他们的具体 类。类型:创建类模式类图:抽象模式与法模式的区别抽象模式是法模式的升级版本,他来创建组相关或者相互依赖的对 象。他与法模式的区别就在于,法模式针对的是个产品等级结构; 抽象模式则是针对的多个产品等级结构。在编程中,通常个产品结构,表现为 个接或者抽象类,也就是说,法模式提供的所有产品都是衍同个接 或抽象类,抽象模式所提供的产品则是衍不同的接或抽象类。在抽象模式中,有个产品族的概念:所谓的产品族,是指位于不同产品等级结 构中功能相关联的产品组成的家族。抽象模式所提供的系列产品就组成个产 品族;法提供的系列产品称为个等级结构。我们依然拿产汽车的例 来说明他们之间的区别。在上的类图中,两厢车和三厢车称为两个不同的等级结构;2.0排量车和2.4排量 车则称为两个不同的产品族。再具体点,2.0排量两厢车和2.4排量两厢车属于同 个等级结构,2.0排量三厢车和2.4排量三厢车属于另个等级结构;2.0排量两厢车 和2.0排量三厢车属于同个产品族,2.4排量两厢车和2.4排量三厢车属于另个产品 族。明了等级结构和产品族的概念,就理解法模式和抽象模式的区别了,如 果的产品全部属于同个等级结构,则属于法模式;如果的产品来 多个等级结构,则属于抽象模式。在本例中,如果个模式提供2.0排量两厢 车和2.4排量两厢车,那么他属于法模式;如果个模式是提供2.4排量两 厢车和2.4排量三厢车两个产品,那么这个模式就是抽象模式,因为他提供的 产品是分属两个不同的等级结构。当然,如果个提供全部四种车型的产品,因 为产品分属两个等级结构,他当然也属于抽象模式了。抽象模式代码interface IProduct1 public void show();interface IProduct2 public void show();class Product1 implements IProduct1 public void show() System.out.println(“这是1型产品“);class Product2 implements IProduct2 public void show() System.out.println(“这是2型产品“);interface IFactory public IProduct1 createProduct1();public IProduct2 createProduct2();class Factory implements IFactorypublic IProduct1 createProduct1() return new Product1();public IProduct2 createProduct2() return new Product2();public class Client public static void main(String args)IFactory factory = new Factory();factory.createProduct1().show();factory.createProduct2().show();抽象模式的优点抽象模式除了具有法模式的优点外,最主要的优点就是可以在类的内部对 产品族进约束。所谓的产品族,般或多或少的都存在定的关联,抽象模式 就可以在类内部对产品族的关联关系进定义和描述,不必专门引个新的类来 进管理。抽象模式的缺点产品族的扩展将是件分费的事情,假如产品族中需要增加个新的产品,则 乎所有的类都需要进修改。所以使抽象模式时,对产品等级结构的划分 是常重要的。适场景当需要创建的对象是系列相互关联或相互依赖的产品族时,便可以使抽象模 式。说的更明点,就是个继承体系中,如果存在着多个等级结构(即存在着多 个抽象类),并且分属各个等级结构中的实现类之间存在着定的关联或者约束,就 可以使抽象模式。假如各个等级结构中的实现类之间不存在关联或约束,则使 多个独的来对产品进创建,则更合适点。总结论是简单模式,法模式,还是抽象模式,他们都属于模式,在 形式和特点上也是极为相似的,他们的最终的都是为了解耦。在使时,我们不必 去在意这个模式到底法模式还是抽象模式,因为他们之间的演变常常是令 琢磨不透的。经常你会发现,明明使的法模式,当新需求来临,稍加修 改,加了个新法后,由于类中的产品构成了不同等级结构中的产品族,它就变 成抽象模式了;对于抽象模式,当减少个法使的提供的产品不再构成 产品族之后,它就演变成了法模式。所以,在使模式时,只需要关降低耦合度的的是否达到了。W3Cschool(www.w3cschool.cn)最的技术知识分享与学习平台此篇内容来于w3cschool.cn站户上传并发布。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号