设计模式知识点--持续更新

2018-04-12  本文已影响4人  没睡醒的鱼

首先来介绍一下两个被问的最多的设计模式

1.工厂方法模式:

凡是出现了大量的商品需要创建并且这些商品实现了共同的接口时,考试使用工厂方法模式。

简单工厂模式:

我们以发邮件和发短信为例,首先创建一个sender接口,然后创建它的两个实现类mailSender和smsSender,最后再创建工厂类。


简单工厂模式

多个工厂方法模式:

多个工厂方法模式与简单工厂方法模式的区别在于,如果在简单工厂方法模式中传递的参数有误则不能正确创建对象,而多个工厂方法模式提供多个工厂方法分别创建对象。我们将上面的代码修改一下sendFactory


多个工厂方法模式

静态工厂方法模式:

静态工厂方法模式就是将工厂中的方法设为静态的,不需要创建实例,直接调用即可

抽象工厂方法模式:

在普通工厂方法模式中有一个问题,就是如果要扩展程序就要对工厂类进行修改,为了解决这个问题,就需要用到抽象工厂模式,要对功能进行扩展只需要添加工厂类即可而不是对工厂类进行修改。


抽象工厂方法模式

2.单例模式:

单例模式的特点:

单例类的几种实现方式:

懒汉式

线程不安全,被调用的时候才初始化


懒汉式
线程安全的懒汉式:

加synchronized保证线程安全,但会影响效率。懒加载


线程安全的懒汉式
饿汉式

线程安全,不会发生懒加载

双重锁校验:

这种方式采用双重锁方式来保证线程安全。懒加载


双重锁校验
枚举

枚举实现的单例模式是线程安全的,不会延迟初始化。


枚举

代理模式

假设C类要调用A类,但是A类不给C类直接调用,我们可以在A类与C类之间添加一个B类,A类和B类实现了共同的接口,接口的实现是在A类中,C类通过调用B类来实现对A类的调用


代理模式类图

外观模式

现在流行炒股,股民一般都手持好多个股票,而股民每天需要关注手中N个股票的动向,随时针对不同的股票作出不同的决策,这样感觉心好累;于是有的人选择买基金。基金本质上还是炒股票,只不过基金机构拿了投资人的钱买了N个股票,而我们只要购买一个基金就够了,对N个股票的管理就交给基金机构去折腾了

假设现在有多个子系统,如果客户端直接与这些子系统进行交互,客户端将会变的很复杂,这时候需要引入一个外观类负责与这些子系统进行交互,客户端只需要调用外观类的接口就可以了

装饰模式

运行的过程中,给一个对象动态地添加一些额外的行为。每一个具体的装饰类都为被装饰类添加一个功能

上一篇 下一篇

猜你喜欢

热点阅读