`

设计模式之factory

阅读更多
(封装)Encapsulation Delegation(分派)

Factory 将创建实例的工作分离

1.FactoryMethod



2. AbstractFactory
public abstract class Factory{
  public abstract Sample creator();
  public abstract Sample2 creator(String name);
}

public class SimpleFactory extends Factory{
  public Sample creator(){
    return new SampleA
  }
  public Sample2 creator(String name){
    return new Sample2A
  }
}

public class BombFactory extends Factory{
  public Sample creator(){
    return new SampleB
  }
  public Sample2 creator(String name){
    return new Sample2B
  }
}

public abstract class ForumFactory {

private static Object initLock = new Object();
private static String className = "com.jivesoftware.forum.database.DbForumFactory";
private static ForumFactory factory = null;

public static ForumFactory getInstance(Authorization authorization) {
if (authorization == null) {
return null;
}
//以下使用了Singleton 单态模式
if (factory == null) {
synchronized (initLock) {
if (factory == null) {
try {
Class c = Class.forName(className);
factory = (ForumFactory) c.newInstance();
} catch (Exception e) {
return null;
}
}
}
}
//Now, 返回 proxy.用来限制授权对forum的访问
return new ForumFactoryProxy(authorization, factory, factory.getPermissions(authorization));
}

//真正创建forum的方法由继承forumfactory的子类去完成.
public abstract Forum createForum(String name, String description) throws UnauthorizedException, ForumAlreadyExistsException;
}
分享到:
评论

相关推荐

    设计模式之Factory

    本篇文章将详细探讨"设计模式之Factory",它是一种非常基础且重要的创建型设计模式。 Factory模式的核心思想是提供一个接口或者抽象类,用于创建某一类对象,但允许其子类决定实例化哪一个类。这种模式使得创建过程...

    java设计模式之Factory借鉴.pdf

    在标题和描述中提到的《java设计模式之Factory借鉴.pdf》文档,主要阐述了工厂模式的核心概念和实际应用。工厂模式的主要目的是为了将对象的创建过程与使用对象的逻辑分离,从而提高代码的可维护性和可扩展性。传统...

    c#面向对象设计模式之factory method

    "工厂方法"(Factory Method)是这些设计模式之一,属于创建型模式,它在C#编程中扮演着至关重要的角色。本教程由张建中教授,旨在深入解析C#中的工厂方法设计模式。 工厂方法模式是一种抽象工厂模式的变体,主要...

    二十三种设计模式【PDF版】

    设计模式之 Factory(工厂方法和抽象工厂) 使用工厂模式就象使用 new 一样频繁. 设计模式之 Builder 汽车由车轮 方向盘 发动机很多部件组成,同时,将这些部件组装成汽车也是一件复杂的工作,Builder 模式就是将这...

    JAVA设计模式chm文档

    设计模式之Factory 设计模式之Prototype(原型) 设计模式之Builder 设计模式之Singleton(单态) 结构模式: 设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计...

    java设计模式之Factory参照.pdf

    Java设计模式中的工厂模式是一种创建型设计模式,它提供了一个创建对象的接口,使得客户端能够避免与具体的类绑定,而是通过工厂方法来获取所需的对象。工厂模式的核心思想是将对象的创建过程封装起来,以便在不修改...

    java设计模式之Factory[文].pdf

    Java中的工厂模式是一种重要的设计模式,它为创建对象提供了一个接口,使得对象的创建过程更加灵活,同时也将对象的创建和使用分离,提高了代码的可维护性和可扩展性。工厂模式是面向对象设计中的一种基础模式,它...

    java设计模式之Factory文.pdf

    Java设计模式中的工厂模式是一种创建型设计模式,它提供了一个创建对象的接口,使得子类可以决定实例化哪一个类。工厂模式的主要目的是将对象的创建过程封装起来,从而使得系统更具扩展性和灵活性。 为何使用工厂...

    设计模式文档 chm

    设计模式之Factory 设计模式之Prototype(原型) 设计模式之Builder 设计模式之Singleton(单态) 结构模式: 设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计...

    GoF 23种设计模式的详解与应用

    创建模式:设计模式之Factory,设计模式之Prototype(原型),设计模式之Builder,设计模式之Singleton(单态). 结构模式:设计模式之Facade(外观),设计模式之Proxy(代理),设计模式之Adapter(适配器),设计模式之Composite...

    Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)

    这里我们将深入探讨三种常见的Java设计模式:单例(Singleton)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)。 **单例模式(Singleton)** 单例模式确保一个类只有一个实例,并提供一个全局访问点...

    JAVA设计模式23种

    设计模式之Factory(工厂方法和抽象工厂) 使用工厂模式就象使用 new一样频繁. 设计模式之Builder 汽车由车轮 方向盘 发动机很多部件组成,同时,将这些部件组装成汽车也是一件复杂的工作,Builder模式就是将这两 种...

    设计模式整理(很全)

    创建模式 设计模式之Singleton(单态/单件) 阎宏博士讲解:单例(Singleton)模式 保证一个类只有一个实例,并提供一个访问它的全局访问点 设计模式之Factory(工厂方法和抽象工厂) 使用工厂模式就象使用new一样频繁....

    JAVA与设计模式PPT版本(通俗易懂)

    设计模式之Factory -工厂模式 客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。 缺点是当产品修改时,工厂类也要做相应的修改。 追MM少不了请吃饭了,麦当劳...

    设计模式之蝉

    还有“工厂模式”(Factory pattern),它是创建型设计模式之一,用于创建对象而不暴露创建逻辑给客户端,并且通过使用一个共同的接口来指向新创建的对象。这种模式在创建对象时提供了更高的灵活性和可扩展性。在...

    C++的设计模式之工厂方法模式(Factory Method)

    C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method)

    设计模式之Abstract Factory模式和代码实现

    在设计模式中,Abstract Factory模式是一种用来解决在不指定具体实现的情况下创建一系列相关或相互依赖对象的模式。在本文的上下文中,我们看到它被应用于一个奇幻RPG游戏的角色种族设计,每个种族(如人类、精灵)...

    c#描述设计模式应用手册

    书中特别提到了“设计模式之Factory.chm”,这暗示了对工厂模式的深入探讨。工厂模式是一种创建型模式,它提供了一个创建对象的接口,但允许子类决定实例化哪一个类。这样,工厂模式就可以使一个类的实例化延迟到其...

Global site tag (gtag.js) - Google Analytics