文档章节

单例模式 + 抽象工厂

szu_吴鹏
 szu_吴鹏
发布于 2014/03/24 23:09
字数 452
阅读 92
收藏 6

回顾一下以前学过的设计模式:

首先不管什么,先来个单例,单例模式就是实例化一次,且自行实例化并向整个工程提供这个实例的服务。

有两种模式,第一种就是在类加载的时候,就实例化这个类。如下代码:

class Singleton {

   private static Singleton sg = new Singleton();   //类加载就创建这个实例

   private Singleton(){}  //这里用私有的构造方法是为了防止外部变量通过构造方法创建实例

   public static Singleton getInstance(){

    return sg;

}

}

第二种方式是在取得实例化方法的时候才会实例化类

class Singleton2{

   private static Singleton2 sg2;

   private Singleton2(){}

   public static sychronized Singleton2 getInstance(){

      if(sg2 == null){

        sg2 = new Singleton2();//在取得实例化方法的时候才会实例化类

      }

      return sg2;

}

}

第二种方法用了同步锁,因为考虑到线程安全性问题。


接下来再给出一个抽象工厂的代码吧

interface Iproduce {

public void ProduceMethord();

}

class produce1 implements Iproduce{

@Override

public void ProduceMethord() {

System.out.println("produce1!");

}

}

//耦合性就不会太高了,如果想造其他的产品,创建一个新的产品类实现。

class produce2 implements Iproduce{

@Override

public void ProduceMethord() {

System.out.println("produce2!");

}

}

interface Ifactory{

public Iproduce createdProduce();

}

class factory implements Ifactory{

@Override

public Iproduce createdProduce() {

return new produce2();

}

}

public class SimpleFactory {

public static void main(String[] args) {

Ifactory f  = new factory();

Iproduce ip = f.createdProduce();

ip.ProduceMethord();

}

}

主要是为了减低耦合,方便以后代码的扩展和维护。一个工厂抽象和一个产品抽象,而工厂抽象返回的对象是产品的抽象,这样就很方便了,以后需要构造什么新类型的产品,我只需要实现一个新的工厂抽象就可以了,以前什么样的代码就什么样,完全不用改动。

© 著作权归作者所有

共有 人打赏支持
szu_吴鹏
粉丝 9
博文 11
码字总数 6755
作品 0
深圳
程序员
简单工厂和工厂方法以及抽象工厂模式

工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类 抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类 个人觉得这个区别在于产品,如果产...

王大叔爱编程
2014/09/26
0
0
设计模式: Java中的工厂设计模式

原文链接 https://github.com/shellhub/blog/issues/22 前言 工厂设计模式(Factory Design Pattern)属于创建模式之一,工厂设计模式在JDK,Spring,Stuts被广泛使用 当一个类或者接口有多个子类...

shellhub
08/22
0
0
设计模式梳理(一)

设计模式梳理(一) 总体来说设计模式分为三大类: @案例源码地址:https://gitlab.com/lxqxsyu/DisgnPattern 创建型模式 简单工厂模式 工厂类是整个模式的关键。它包含必要的判断逻辑,能够...

lxq_xsyu
2017/11/02
0
0
设计模式2——Factory设计模式

Factory工厂设计模式为创建对象提供了一种抽象,而对使用者屏蔽了对象创建的具体细节过程,工厂模式有三种:简单工厂模式,抽象工厂模式和工厂方法模式。 1. 简单工厂模式: 又叫静态工厂模式...

小米米儿小
2013/12/05
0
0
炒冷饭系列:设计模式 抽象工厂模式

炒冷饭系列:设计模式 抽象工厂模式 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 亲爱我,孝何难;亲恶我,孝方贤。 一、什么是抽象工厂模...

泥沙砖瓦浆木匠
2014/07/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

中秋快乐!!!

HiBlock
29分钟前
0
0
Node安装教程

1、安装最新版的node 2、设置相关目录(以D盘为例) 分别建立目录:D:\node,D:\node\node-globa,D:\node\node-cache 命令行输入: // 设置npm国内镜像 npm config set registry https://re...

Mohan710
57分钟前
3
0
中国发布域名系统基础软件 “红枫”

9月12日消息,域名工程中心(英文缩写 ZDNS)发布了宣称自主开发的域名系统基础软件 “红枫(Maple DNS)”。 9月12日消息,域名工程中心(英文缩写 ZDNS)发布了宣称自主开发的域名系统基础软...

问题终结者
今天
3
0
Shell编程(分发系统介绍、expect远程登录、expect远程执行命令、expect传递参数)

分发系统介绍expect 分发系统expect即分发脚本,是一种脚本语言;通过他可以实现传输,输入命令(上线代码) 应用场景:业务越来越大,网站app,后端,编程语言是php,所以就需要配置lamp或者...

蛋黄_Yolks
今天
2
0
Java Http请求工具类

public static String httpPost(String source, String params) {URL url = null;HttpURLConnection conn = null;OutputStream os = null;String ret = null;try {......

yuewawa
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部