- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
常用的设计模式
常用的设计模式
最常用的设计模式 最常用的设计模式
设计模式通常是对于某一类的软件设计问题的可重用的解决方案,将设计模式引入软件设计和开发过程,其目的就在于要充分利用已有的软件开发经验。
最常用的设计模式根据我的经验我把我经常用到的设计模式在这里做个总结,按照我的经验,它们的排序如下:1)单件模式、2)抽象工厂模式和工厂模式、3)适配器模式、4)装饰模式、5)观察者模式、6)外观模式 其他模式目前还很少用到。
单件模式
这是用的最多的模式,每一个正式的软件都要用它,全局配置、唯一资源、还有一个就是所有的工厂我都设计为单件模式,因此它的使用量大于工厂模式和抽象工厂模式之和。是用来创建一个需要全局唯一实例的模式。只是需要纠正一点。singleton模式中,构造函数应该是protected.这样子类才可以扩展这个构造函数。
单件模式主要应用在以下场合:
1. 对于一个类,占用的系统资源非常多。而且这些资源可以被全局共享,则可以设计为singleton模式,强迫全局只有一个实例
2. 对于一个类,需要对实例进行计数。可以在createInstance中进行并可以对实例的个数进行限制。
3. 对于一个类,需要对其实例的具体行为进行控制,例如,期望返回的实例实际上是自己子类的实例。这样可以通过Singleton模式,对客户端代码保持透明。
Singleton模式是一个较为简单的模式,下面的代码就可以建立一个Singlton模式的例子,这是一个写系统日志的类,实际应用的意义在于在内存中只保存一个实例,避免开辟多个功能相同的工具类实例而耗用系统资源。当多个应用调用同一个工具类或控制类时特别有意义,建议团队开发时采用。
public class LogWriter
{
//申明一个静态的变量,类型为类本身
private static LogWriter _instance = null;
//将类的构造函数私有化,使得这个类不可以被外界创建
private LogWriter()
{
}
//提供静态的方法,创建类的实例
public static LogWriter GetInstance()
{
if (_instance == null)
{
_instance = new LogWriter();
}
return _instance;
}
}
分析:如果是多线程的情况下该如何保持单件模式?
A: 多线程时应该也是单件的吧,因为线程之间是共享内存的。
请问要是我想限制实例个数不超过10个 应该怎么办呢?
A: 做个类似线程池的东西吧
多线程下面也可以用,可以有很多种方法
1、对静态方法进行同步,2、急切创建实例,3、双重检查加锁
public class Singleton {
private volatile static Singleton singleton ;
private Singleton () {}
public Singleton ( String name ) {}
public static Singleton getInstance () {
if ( singleton == null ) {
synchronized ( Singleton.class ) {
if ( singleton == null ) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
单例模式:单例的实现和上面模式演变中的最后一种很相似,只要把构造器私有便OK。
简单工厂模式
简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
public class SteamedBread
{
public SteamedBread() // 构造方法
{ }
private double price=0.5;
public double Price
{
get { return price; }
set { price = value; }
}
}
OK,产品对象建立好了,下面就是创建工厂(Factory)对象了。
public class Factory
{
public static SteamedBread
原创力文档


文档评论(0)