模式学习的自我理解和疑惑(1)

原创 2004年07月15日 21:50:00
 
?工厂模式就是专门负责将大量有共同接口的类实例化,而且不必事先知道每次是要实例化哪一个类的模式。
?工厂模式有以下几种形态:
 简单工厂(Simple Factory)模式
工厂方法(Factory Method)模式
抽象工厂(Abstract Factory)模式
 
1.简单工厂模式
   父类: 产品 (接口)  
  子类:  具体的产品(继承产品)
  工厂类: 负责创建具体的产品
 
 
在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例, 如同一个交通警察站在来往的车辆流中,决定放行哪一个方向的车辆向那一个方向流动一样。
比如水果类,有多种水果
园丁(工厂)会种它们.通过工厂得到不同的水果实例
 
2. 工厂方法模式
 
?工厂方法模式是简单工厂模式的进一步抽象化和推广。
?它比简单工厂模式聪明的地方在于, 它不再作为一个具体的交通警察的面貌出现,而是以交通警察局(工厂)的面貌出现。 具体的警察成为工厂方法的执行者
?
?工厂方法模式里不再只由一个工厂类决定哪一个产品类应当被实例化,这个决定被交给子类去作。
某种具体工厂创建某种具体产品(产品不单一,多种产品)
比如植物类,分水果类,蔬菜类
园丁(工厂)分水果类的园丁(只种水果),蔬菜类的园丁
3.抽象工厂模式
   工厂分区域,产品分区域
   一种区域具体的工厂不再只会创建一个种具体产品,而是能创建一个区域多种具体产品.
   比如植物类,分水果类,蔬菜类,水果类和蔬菜类可以是北方种的;或南方种的.
    园丁(工厂)就有南方人的园丁,北方人的园丁,他们都会种水果和蔬菜.
 
4.单态模式
 
?一个单态类只可有一个实例。这样的类常用来进行资源管理。
?
?例如:很多软件都有数据库,一般而言, 整个软件应当使用一个联接通道,而不是任意在需要时就新打开一个联接通道。
?
通常用getInstance()得到实例.
 
特性:
 
1、单态类只可有一个实例。

2、它必须自己创立自己这唯一的一个实例。

3、它必须给所有其它的类提供自己这一实例。

  最后,单态类在理论和实践上都并非限定只能有"一个"实例,而是很容易推广到任意有限个实例的情况。
 
饿汉式单态类
 
?由于构造器是私有的,因此此类不能被继承
?package com.javapatterns.singleton.demos;
public class EagerSingleton {
    private
EagerSingleton() { }
    public static EagerSingleton getInstance() {
 
    return m_instance;
    }
    private static final EagerSingleton m_instance = 
                                               new EagerSingleton();
}
 
懒汉式单态类
 
懒汉式单态类在第一次被引用时将自己实例化
?构造子是私有的,因此此类不能被继承
?public class LazySingleton {
?  private LazySingleton() {}
? /**
?   * 静态工厂方法,返还此类的唯一实例。因为创建实例的时候, 
?   * 涉及到资源初始化,所以最好使用同步机制。
? */
?  synchronized public static LazySingleton getInstance() {
?      if (m_instance == null) {
?        m_instance = new LazySingleton();
?      }
?      return m_instance;
?    }
?
?   private static LazySingleton m_instance = null;
?}
 
两种单态类的比较
?饿汉式单态类在自己被加载时就将自己实例化。
?
?单从资源利用效率角度来讲,这是比懒汉式单态类稍差些。
?
?从速度和反应时间角度来 讲,则比懒汉式单态类稍好些。
?
?懒汉式单态类在实例化时必须处理好在多个线程同时首次引用此类时,实例化函数内部关键段的访问限制问题。
 
单态经常在数据库连接时使用 
?
版权声明:本文为博主原创文章,转载请注明来源。

计算机可以这样玩—自我学习,自我思维,自我工作(编程)

如果让计算机产生自我意识,那一定件很好玩的事情。               我在想,怎么让计算机产生自我意识和自我学习的思维能力呢,特别是在工业集群中的应用。               由这个...
  • luozhonghua2014
  • luozhonghua2014
  • 2014年08月06日 22:06
  • 1207

ufldl 深度学习入门 第三发: 自我学习与无监督特征学习

目的:使用稀疏自编码器提取特征,使用softmax做分类器,实现手写字符识别分类。 好处:相比较前面直接使用softmax分类器(92%识别率),能够提升分类器的效果,达到98%以上。 体会:通过自学...
  • sloanqin
  • sloanqin
  • 2015年09月28日 22:10
  • 766

问题....

3.     1.一个游戏里有许多士兵,这些士兵可以通过装备不同的武器来将其转变为不同的 兵种,比如装备上弓箭便可以转变为弓箭手,从而拥有弓箭手的一些特 殊能力, 比如装备上马,便转变为骑兵,从...
  • green_eyes
  • green_eyes
  • 2013年05月15日 18:07
  • 338

自我学习与半监督学习的区别

From http://deeplearning.stanford.edu/wiki/index.php/Self-Taught_Learning There are two common un...
  • FacingTheSunCN
  • FacingTheSunCN
  • 2014年03月26日 17:16
  • 1226

自我学习反思

// TODO 我现在已经具有踏实的属性了,还应该添加学习方法和学习感悟这两个属性,其实打心底里我是不相信我学习能力差的。 1.对学习的耐心不够,学习首先得有适当的环境,然后在有心境,最后是学习方...
  • qq_27252133
  • qq_27252133
  • 2017年12月12日 13:38
  • 36

JAVA 学习 自我总结

学习总结: 孔子曰学而时习之 不亦悦乎 。学习了新的东西,一定要及时练习和总结,并多次回想记忆,这样才能将知识记忆的牢固; 之前我学习东西只知道贪多,想一口吃一个胖子;但是每次都是事倍功半,这样又...
  • u010582345
  • u010582345
  • 2016年04月08日 23:58
  • 434

dAO模式理解一

DAO设计模式包括以下5个主要部分: 1数据库连接类; java 方式链接 在官网下载一个文件进行配置 Import java.sql.*;    Public class DataBas...
  • qq_38177482
  • qq_38177482
  • 2017年04月27日 21:16
  • 257

关于SNTP广播模式的疑惑

刚刚接触SNTP,有个工作需要用到SNTP环境.服务器用的broadcast模式(局域网),我知道unicast模式下,传输损耗时间d与本地时间偏差t分别如下:  d = (T4 - T1) - (T...
  • green_eyes
  • green_eyes
  • 2011年03月25日 21:27
  • 354

深度学习UFLDL教程翻译之自我学习

一、概述        假设我们有足够强大的学习算法,得到较好结果的其中一种最靠谱的方法是给算法提供更多的数据。这验证了在机器学习的那句格言:“有时候获胜的不是谁有最好的算法,而是谁有最多的数据。” ...
  • hunterlew
  • hunterlew
  • 2016年08月18日 22:31
  • 1304

NOIP2017小凯的疑惑(提高D1T1)

题面传送门小学奥数题&&结论题给大家一个不太严谨的证明:引用来自 用到一个引理:不定方程ax+by=c(a,b,c>0)ax+by=c(a,b,c\gt0)一定有一组解(x1,y1)(x_1,y_...
  • qwerty1125
  • qwerty1125
  • 2017年11月29日 09:55
  • 390
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:模式学习的自我理解和疑惑(1)
举报原因:
原因补充:

(最多只允许输入30个字)