欢迎来到天天文库
浏览记录
ID:51473226
大小:185.00 KB
页数:17页
时间:2020-03-23
《设计模式简要概述.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库。
1、设计模式DesignPatterns概述导致重新设计的一般原因通过显式指定一个类来创建对象对特殊操作的依赖对硬件和软件平台的依赖对对象表示和实现的依赖对算法的依赖紧耦合通过生成子类来扩充功能不能方便地对类进行修改概述继承、组合、参数化类型类继承与接口继承的比较继承与组合的比较继承与参数化类型的比较原则一:对接口编程,而不是对实现编程原则二:优先使用对象组合,而不是继承概述可复用模式基类、接口可复用框架框架使用者实现类使用继承创建和使用使用概述什么是设计模式设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述。每一个模式描述了
2、一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。概述设计模式编目范围目的创建型结构型行为型类FactoryMethodAdapterInterpreterTemplateMethod对象AbstractFactoryBuilderPrototypeSingletonAdapterBridgeCompositeDecoratorFacadeFlyweightProxyChainofResponsibilityCommandIteratorMediatorMementoObserve
3、rStateStrategyVisitor创建型模式创建型模式的目的使系统独立于如何创建、组合和表示对象。类创建型模式使用继承改变被实例化的类。对象创建型模式将实例化委托给另一个对象。AbstractFactoryBuilderFactoryMethodPrototypeSingleton什么是单例(Singleton)模式作为对象的创建模式[GOF95],单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。单例模式的三个要点:只能有一个实例;必须自行创建这个实例;它必须自行向整个系统提供这个实例。0.什
4、么是单例(Singleton)模式一个例子:Windows回收站在整个视窗系统中,回收站只能有一个实例,整个系统都使用这个惟一的实例,而且回收站自行提供自己的实例。因此,回收站是单例模式的应用。1.单例模式的结构单例类的简略类图如下所示。单例模式在Java语言的实现上有自己的特别,这些特点往往表现在如何将自己实例化上,大致有以下三种:饿汉式单例类懒汉式单例类2.单例模式的实例化形式饿汉式单例类饿汉式单例类是在Java语言里实现得最为简便的单例类。此类自己将自己实例化.2.单例模式的实例化形式饿汉式单例类代码清单:publicclassEager
5、Singleton{//加载时就实例化privatestaticfinalEagerSingletonm_instance=newEagerSingleton();//私有的构造方法privateEagerSingleton(){}//静态工厂方法publicstaticEagerSingletongetInstance(){returnm_instance;}}2.单例模式的实例化形式懒汉式单例类与饿汉式单例类相同之处是,类的构造方法是私有的。与饿汉式单例类不同的是,懒汉式单例类在第一次被引用时将自己实例化。如果加载器是静态的,那么在懒汉式单
6、例类被加载时不会将自己实例化。2.单例模式的实例化形式懒汉式单例类代码清单:publicclassLazySingleton{privatestaticLazySingletonm_instance=null;privateLazySingleton(){}//静态工厂方法,在获取实例时才实例化synchronizedpublicstaticLazySingletongetInstance(){if(m_instance==null){m_instance=newLazySingleton();}returnm_instance;}}3.在什么
7、情况下使用单例模式?使用单例模式的条件使用单例模式有一个很重要的必要条件:在一个系统要求一个类只有一个实例时才应当使用单例模式。反过来说,如果一个类可以有几个实例共存,那么就没有必要使用单例类。但是做到上面这一点并不容易,下面就是一些这样的情况。4.在什么情况下使用单例模式?例子一问:我的一个系统需要一些“全程”变量。学习了单例模式后,我发现可以使用一个单例类盛放所有的“全程”变量。请问这样做对吗?答:这样做是违背单例模式的用意的。单例模式只应当在有真正的“单一实例”的需求时才可使用。一个设计得当的系统不应当有所谓的“全程”变量,这些变量应当放
8、到它们所描述的实体所对应的类中去。将这些变量从它们所描述的实体类中抽出来,放到一个不相干的单例类中去,会使得这些变量产生错误的依赖关系和耦合关系。4.
此文档下载收益归作者所有