单例
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的面向对象特性使得设计...
1、单例模式 结论:单例模式可以把数据封装在对象里,操作对象;而静态类是把数据封装在类里,操作类。单例模式中,数据只有在对象存在的时候才能操作;而静态类中,数据可以直接通过静态类点出来操作。 2、工厂模式...
单例模式和工厂模式是两种常见的软件设计模式,在面向对象编程中扮演着重要的角色。它们都是为了解决特定的问题而提出的解决方案,但有着不同的应用场景和设计思路。 **单例模式** 是一种限制类实例化次数的模式,...
虽然标题提到的是单例模式,但工厂模式也值得一提。工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当创建对象时,不会直接实例化对象,而是通过一个专门的工厂类来创建。工厂类可以...
在软件设计模式中,工厂模式和单例模式是两种非常基础且重要的模式,它们都是用于解决对象创建问题,但有着不同的设计理念和应用场景。本篇文章将深入探讨这两种模式,并结合具体的代码示例`myFactoryDemo`进行讲解...
在本文中,我们将深入探讨三种工厂设计模式——简单工厂模式、抽象工厂模式和工厂方法模式,以及两种单例模式——饿汉单例模式和懒汉单例模式。这些模式都是面向对象设计中的重要组成部分,对于理解和构建可维护、可...
细心整合和单例模式和工厂模式的几种模型,懒汉式,饿汉式,如何并发操作模式,等都有详细讲解
在软件设计模式中,"简单工厂"、"代理模式"和"单例模式"是非常重要的概念,它们在实际开发中有着广泛的应用。下面将详细解释这三个设计模式,并结合实际示例进行阐述。 **简单工厂模式**是一种创建型设计模式,它...
例如,MVC模式在Web应用开发中非常常见,单例模式常用于日志服务、数据库连接池等需要全局唯一的场景,代理模式可以用于数据访问控制,工厂模式则用于解耦对象的创建和使用。通过学习和实践这些模式,开发者可以更好...
本篇将深入探讨标题中提及的几种设计模式:Model-View-Controller(MVC)模式、单例模式、代理模式以及工厂模式,尤其是简单工厂模式。 **1. Model-View-Controller (MVC) 模式** MVC模式是一种架构模式,它将应用...
本项目涵盖了四种常见的设计模式:单例模式、工厂模式、动态代理和适配器模式。下面将详细阐述这四种设计模式的概念、作用以及在实际项目中的应用。 **1. 单例模式** 单例模式是一种限制类实例化次数为一个的设计...
在软件工程中,单例模式常用于控制资源的共享,比如数据库连接池、线程池或者日志系统等,这些资源通常需要全局唯一且高效地访问。 在Java中,实现单例模式有多种方式,但最常见的问题是线程安全问题。例如,上述...
单例模式是软件设计模式中的经典模式之一,其主要目的是控制类的实例化过程,确保在应用...在设计模式中,单例模式不仅限于上述实现,还可以与其他模式结合使用,如工厂模式、装饰器模式等,以达到更灵活、高效的设计。
单例模式是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在C++中,实现单例模式有多种方法,我们将会深入探讨这一模式的原理、优缺点以及如何在实际编程中应用。 单例模式的核心在于...
单例模式是一种常用的设计模式,它的核心思想是在整个应用程序中,一个类只能有一个实例存在。单例模式常用于控制资源的共享,例如数据库连接池、日志服务等。单例模式有多种实现方式,常见的包括懒汉式、饿汉式以及...
单例模式详解 单例模式是 Java 设计模式中的一种常见模式,旨在保证整个应用中只有一个类的实例存在。单例模式分为三种:懒汉式单例、饿汉式单例、登记式单例。下面对单例模式的特点、实现方式和应用场景进行详细...
单例模式的关键在于限制类的实例化过程,通常通过私有构造函数和静态工厂方法来实现。这样可以避免多个实例导致的数据不一致性和资源浪费。 命令模式则将请求封装为一个对象,使得可以使用不同的请求、队列请求、...