首页 > 其他 > 详细

设计模式一(工厂方法、抽象工厂、单例)

时间:2014-03-01 00:39:45      阅读:458      评论:0      收藏:0      [点我收藏+]

(一)简单工厂模式

1、实现思维:简单工厂模式是根据提供给他的数据,返回几个可能。类中的实例。通常他返回的是一个共同的父类和共同的方法,但是每个方法执行的任务不同,而且根据不同数据进行了优化。

2、实例:

父类:      bubuko.com,布布扣

子类1:                                                        子类2:

bubuko.com,布布扣bubuko.com,布布扣

工厂:bubuko.com,布布扣

使用工厂:

bubuko.com,布布扣

1、 缺点:违反了“开放-封闭原则”。

2、  

(二)工厂方法模式

1、实现思维:没有专门的类来决定所要实例化的子类,将此实现延迟到子类,这种模式实际没有决策点。

2、实例:

父类:

bubuko.com,布布扣

子类1:                                                  子类2:

bubuko.com,布布扣bubuko.com,布布扣

基类工厂(接口):

bubuko.com,布布扣

对应子类工厂1:                             对应子类工厂2:

bubuko.com,布布扣bubuko.com,布布扣

使用:

bubuko.com,布布扣

3、性能优缺:虽然遵循了“开发-封闭原则”,但是当增加相应的产品时,必须增加一个相应的产品工厂,增大了开发量。

更换对象时,降低了客户程序与产品对象的耦合。

(三)抽象工厂模式

1、实现思维:提供一个创建一系列相关或者是相互依赖的对象接口,而不是需要指定他们具体的类。

2、实例:(反射机制在抽象工厂的应用)

反射机制:运行中的程序对自身进行检查(自审),并能直接操作程序的内部属性。

首先引用bubuko.com,布布扣

父类(“工厂”,利用反射来取代工厂):

bubuko.com,布布扣

子类:

bubuko.com,布布扣bubuko.com,布布扣

反射机制的体现:

bubuko.com,布布扣

应用程序配置文件:

bubuko.com,布布扣

实现:

bubuko.com,布布扣

()、单例模式

1、实现思维:确保某个类只有一个实例,而且自行实例化并向整个系统提供此类的实例(全局访问点)。此类成为单例类。(构造函数私有化)

bubuko.com,布布扣

bubuko.com,布布扣

2、实例(多线程):

双重锁定。以及静态初始化(密封类sealed)。

①  、静态初始化实现单例类

bubuko.com,布布扣

②  、双重锁定实现单例类

bubuko.com,布布扣

为什么使用2次判断??解决了线程的并发问题,同时避免在每个instance属性方法的调用中出现独占锁定。

使用单例类(客户端实现)(多线程)

bubuko.com,布布扣

bubuko.com,布布扣

设计模式一(工厂方法、抽象工厂、单例),布布扣,bubuko.com

设计模式一(工厂方法、抽象工厂、单例)

原文:http://www.cnblogs.com/zwb7926/p/3573238.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!