`
lichen0921
  • 浏览: 81181 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

单例模式 工厂模式

    博客分类:
  • Java
阅读更多

 

单例
package com.enorth.user;

/**
 * @author 李晨
 * @version 创建时间:Jun 29, 2009 9:10:02 AM
 */
public class Singleton {
	private static Singleton singleton = null;

	private Singleton() {
	}

	public static Singleton getInstance() {
		if (singleton == null) {
			// 防止线程安全
			synchronized (Singleton.class) {
				if (singleton == null) {
					singleton = new Singleton();
					return singleton;
				}
			}
		}
		return singleton;
	}
}
  
 
简单工厂
// 产品接口                     
public interface Product {         
        
        public void getName();         
        
}         
        
// 具体产品A         
public class ProductA implements Product {         
        
        public void getName() {         
                System.out.println("    I am ProductA    ");         
        }         
        
}         
        
// 具体产品B         
public class ProductB implements Product {         
        
        public void getName() {         
                System.out.println("    I am ProductB    ");         
        }         
        
}         
        
// 工厂类         
public class ProductCreator {         
        
        public Product createProduct(String type) {         
                if (" A ".equals(type)) {         
                        return new ProductA();         
                }         
                if (" B ".equals(type)) {         
                        return new ProductB();         
                } else        
                        return null;         
        }         
        
        public static void main(String[] args) {         
                ProductCreator creator = new ProductCreator();         
                creator.createProduct(" A ").getName();         
                creator.createProduct(" B ").getName();         
        }         
}   
 抽象工厂
//    产品 Plant接口                     
public interface Plant {         
}         
        
// 具体产品PlantA,PlantB         
public class PlantA implements Plant {         
        
        public PlantA() {         
                System.out.println(" create PlantA ! ");         
        }         
        
        public void doSomething() {         
                System.out.println("    PlantA do something    ");         
        }         
}         
        
public class PlantB implements Plant {         
        public PlantB() {         
                System.out.println(" create PlantB ! ");         
        }         
        
        public void doSomething() {         
                System.out.println("    PlantB do something    ");         
        }         
}         
        
// 产品 Fruit接口         
public interface Fruit {         
}         
        
// 具体产品FruitA,FruitB         
public class FruitA implements Fruit {         
        public FruitA() {         
                System.out.println(" create FruitA ! ");         
        }         
        
        public void doSomething() {         
                System.out.println("    FruitA do something    ");         
        }         
}         
        
public class FruitB implements Fruit {         
        public FruitB() {         
                System.out.println(" create FruitB ! ");         
        }         
        
        public void doSomething() {         
                System.out.println("    FruitB do something    ");         
        }         
}         
        
// 抽象工厂方法         
public interface AbstractFactory {         
        public Plant createPlant();         
        
        public Fruit createFruit();         
}         
        
// 具体工厂方法         
public class FactoryA implements AbstractFactory {         
        public Plant createPlant() {         
                return new PlantA();         
        }         
        
        public Fruit createFruit() {         
                return new FruitA();         
        }         
}         
        
public class FactoryB implements AbstractFactory {         
        public Plant createPlant() {         
                return new PlantB();         
        }         
        
        public Fruit createFruit() {         
                return new FruitB();         
        }         
}    
 
分享到:
评论

相关推荐

    设计模式之单例模式(结合工厂模式)

    将单例模式与工厂模式结合,可以创建一个单例工厂,这个工厂类负责生成单例对象。这样做有两个主要好处:一是隐藏了单例的实现细节,使得代码更加整洁,降低了耦合度;二是可以通过工厂方法扩展新的实现,如果将来...

    设计模式单例模式和工厂模式综合应用

    "设计模式单例模式和工厂模式综合应用"的主题聚焦于两种常用的设计模式:单例模式和工厂模式,并探讨它们如何协同工作来实现高效、灵活的代码结构。这个主题尤其适用于Java编程语言,因为Java的面向对象特性使得设计...

    单例模式 工厂模式DEMO

    1、单例模式 结论:单例模式可以把数据封装在对象里,操作对象;而静态类是把数据封装在类里,操作类。单例模式中,数据只有在对象存在的时候才能操作;而静态类中,数据可以直接通过静态类点出来操作。 2、工厂模式...

    单例模式和工厂模式代码

    单例模式和工厂模式是两种常见的软件设计模式,在面向对象编程中扮演着重要的角色。它们都是为了解决特定的问题而提出的解决方案,但有着不同的应用场景和设计思路。 **单例模式** 是一种限制类实例化次数的模式,...

    php单例模式和工厂模式

    虽然标题提到的是单例模式,但工厂模式也值得一提。工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当创建对象时,不会直接实例化对象,而是通过一个专门的工厂类来创建。工厂类可以...

    工厂模式与单例模式

    在软件设计模式中,工厂模式和单例模式是两种非常基础且重要的模式,它们都是用于解决对象创建问题,但有着不同的设计理念和应用场景。本篇文章将深入探讨这两种模式,并结合具体的代码示例`myFactoryDemo`进行讲解...

    三种工厂设计模式和两种单例模式

    在本文中,我们将深入探讨三种工厂设计模式——简单工厂模式、抽象工厂模式和工厂方法模式,以及两种单例模式——饿汉单例模式和懒汉单例模式。这些模式都是面向对象设计中的重要组成部分,对于理解和构建可维护、可...

    设计模式之单例模式和工厂模式

    细心整合和单例模式和工厂模式的几种模型,懒汉式,饿汉式,如何并发操作模式,等都有详细讲解

    简单工厂,代理模式,单例模式demo

    在软件设计模式中,"简单工厂"、"代理模式"和"单例模式"是非常重要的概念,它们在实际开发中有着广泛的应用。下面将详细解释这三个设计模式,并结合实际示例进行阐述。 **简单工厂模式**是一种创建型设计模式,它...

    java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂

    例如,MVC模式在Web应用开发中非常常见,单例模式常用于日志服务、数据库连接池等需要全局唯一的场景,代理模式可以用于数据访问控制,工厂模式则用于解耦对象的创建和使用。通过学习和实践这些模式,开发者可以更好...

    java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂 第二部分

    本篇将深入探讨标题中提及的几种设计模式:Model-View-Controller(MVC)模式、单例模式、代理模式以及工厂模式,尤其是简单工厂模式。 **1. Model-View-Controller (MVC) 模式** MVC模式是一种架构模式,它将应用...

    javaweb项目+设计模式(单例模式,工厂模式,动态代理,适配器)

    本项目涵盖了四种常见的设计模式:单例模式、工厂模式、动态代理和适配器模式。下面将详细阐述这四种设计模式的概念、作用以及在实际项目中的应用。 **1. 单例模式** 单例模式是一种限制类实例化次数为一个的设计...

    单例模式详解~~单例模式详解~~

    在软件工程中,单例模式常用于控制资源的共享,比如数据库连接池、线程池或者日志系统等,这些资源通常需要全局唯一且高效地访问。 在Java中,实现单例模式有多种方式,但最常见的问题是线程安全问题。例如,上述...

    设计模式之单例模式源码demo

    单例模式是软件设计模式中的经典模式之一,其主要目的是控制类的实例化过程,确保在应用...在设计模式中,单例模式不仅限于上述实现,还可以与其他模式结合使用,如工厂模式、装饰器模式等,以达到更灵活、高效的设计。

    设计模式C++学习之单例模式(Singleton)

    单例模式是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在C++中,实现单例模式有多种方法,我们将会深入探讨这一模式的原理、优缺点以及如何在实际编程中应用。 单例模式的核心在于...

    23钟设计模式之单例模式

    单例模式是一种常用的设计模式,它的核心思想是在整个应用程序中,一个类只能有一个实例存在。单例模式常用于控制资源的共享,例如数据库连接池、日志服务等。单例模式有多种实现方式,常见的包括懒汉式、饿汉式以及...

    单例模式详解

    单例模式详解 单例模式是 Java 设计模式中的一种常见模式,旨在保证整个应用中只有一个类的实例存在。单例模式分为三种:懒汉式单例、饿汉式单例、登记式单例。下面对单例模式的特点、实现方式和应用场景进行详细...

    单例模式_命令模式

    单例模式的关键在于限制类的实例化过程,通常通过私有构造函数和静态工厂方法来实现。这样可以避免多个实例导致的数据不一致性和资源浪费。 命令模式则将请求封装为一个对象,使得可以使用不同的请求、队列请求、...

Global site tag (gtag.js) - Google Analytics