12常用模式之单例,工厂和策略三种

                               单例模式

什么是单例模式?

单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例

优点:

一、实例控制

单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。

二、灵活性

因为类控制了实例化过程,所以类可以灵活更改实例化过程。

缺点:

一、开销

虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销。可以通过使用静态初始化解决此问题。

二、可能的开发混淆

使用单例对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用new关键字实例化对象。因为可能无法访问库源代码,因此应用程序开发人员可能会意外发现自己无法直接实例化此类。

三、对象生存期

不能解决删除单个对象的问题。在提供内存管理的语言中(例如基于.NET Framework的语言),只有单例类能够导致实例被取消分配,因为它包含对该实例的私有引用。在某些语言中( C++),其他类可以删除对象实例,但这样会导致单例类中出现悬浮引用。

常用形式:

第一种形式:懒汉式,也是常用的形式。

第二种形式:饿汉式

第三种形式: 双重锁的形式。


 

                           简单工厂模式

什么是简单工厂模式?

简单点说呢,就是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

简单工厂模式的优缺点分析?

优点:

有利于整个原件体系的优化

缺点:

违反高聚合的分配原则

不利于对系统的维护和扩展;

使用场景?

工厂类负责创建的对象比较少;

客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心;

由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用。

                               策略模式

什么是策略模式?

策略模式是指有一定行动内容的相对稳定的策略名称。

优点:

1.   避免代码重复。

2.   策略模式提供了可以替换继承关系的办法

3.   可以避免使用多重条件转移语句

缺点:

1.   策略模式只适用于客户端知道所有的算法或行为的情况

2.   可以使用享元模式来减少对象的数量

使用场景?

1.   多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。

2.   需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现。

3.   对客户隐藏具体策略(算法)的实现细节,彼此完全独立。

猜你喜欢

转载自blog.csdn.net/yingzheada/article/details/80858488