`

[原]工厂方法模式

阅读更多
工厂方法模式的核心是一个抽象工厂类,而简单工厂模式把核心放在一个具体类上.工厂方法模式可以允许很多具体工厂类从抽象工厂类中将创建行为继承下来,从而可以成为多个简单工厂模式的综合,进而推广了简单工厂模式

interface Person{   
    public abstract void love();   
    public abstract void like();   
}   
  
class Boy implements Person{   
    public void love(){   
        System.out.println("男孩爱女孩");   
    }   
    public void like(){   
        System.out.println("男孩喜欢让女孩天天开心");   
    }   
}   
  
class Girl implements Person{   
    public void love(){   
        System.out.println("女孩也爱男孩");   
    }   
    public void like(){   
        System.out.println("女孩希望男孩天天陪着她");   
    }   
}   
  
class Man implements Person{   
    public void love(){   
        System.out.println("男人爱钱也爱女人");   
    }   
    public void like(){   
        System.out.println("男人更喜欢能拥有一辆自己的车");   
    }   
} 

class Woman implements Person{   
    public void love(){   
        System.out.println("女人也爱男人");   
    }   
    public void like(){   
        System.out.println("女人更喜欢男人有钱");   
    }   
} 

interface AbstractFactory{
	
}

class AdultFactory implements AbstractFactory{
	public Person getAdult(String type){
		Person c = null;
		try {
			c = (Person)Class.forName("com.dahai."+type).newInstance();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		return c;
	}
}

class MinorsFactory implements AbstractFactory{
	public Person getMinors(String type){
		Person c = null;
		try {
			c = (Person)Class.forName("com.dahai."+type).newInstance();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		return c;
	}
}

public class FactoryDemo{   
    public static void main(String[] args) {   
        AdultFactory cf = new AdultFactory();
    	//MinorsFactory bf = new MinorsFactory();
        Person c = null;
        c = cf.getAdult("Woman");
        //c = bf.getMinors("Boy");
        c.love();
        c.like();
    }   
}  

转载请注明出处,谢谢您对本人的劳动成果表示赞成.
分享到:
评论
3 楼 zgdodo 2009-02-24  
谢谢  给我帮助很大!
2 楼 独家冠名 2008-03-21  
谢谢您的回复,abstract是故意加上去的,因为基础不是很好,所以把它写上,加深一下印象,顺便记一下接口的默认方法为public abstract

第二个问题,呵呵,是因为在简单工方法中COPY过来的代码,忘记给删了,谢谢提醒
1 楼 BEA 2008-03-21  
看了写得挺好的,我也在学习设计模式.共同进步吧!

interface Person{      
    public abstract void love();      
    public abstract void like();      
}


abstract  可以不要的。 


class Factory{      
    public static Person getInstance(String type){      
        Person c = null;      
        try {      
            c = (Person)Class.forName("com.dahai."+type).newInstance();      
        } catch (InstantiationException e) {      
            e.printStackTrace();      
        } catch (IllegalAccessException e) {      
            e.printStackTrace();      
        } catch (ClassNotFoundException e) {      
            e.printStackTrace();      
        }      
        return c;      
    }      
} 




你写的是工厂方法,那么这个方法是在简单工厂方法中才出现的,在这就不要了吧!

相关推荐

    [原创][创建型模式] 简单工厂、工厂方法、抽象工厂三种设计模式的理解

    NULL 博文链接:https://jacky-dai.iteye.com/blog/2296369

    asp.net 简单工厂模式和工厂方法模式之论述

    ***中简单工厂模式与工厂方法模式的论述主要涉及以下知识点: 简单工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在简单工厂模式中,有一个专门负责创建对象的工厂类,根据客户端传入的参数,...

    java设计模式(工厂模式,动态代理,责任链模式……)实例源码

    工厂模式有简单工厂、工厂方法和抽象工厂三种形态,分别适用于不同级别的抽象和灵活性需求。 2. 动态代理:动态代理模式在Java中主要通过Java的反射API和InvocationHandler接口实现。它可以动态地生成一个代理类,...

    [浪曦原创]JAVA设计模式 第2讲 单态模式和简单工厂模式(jzkangta).rar

    为了解决这个问题,可以考虑使用抽象工厂模式或者工厂方法模式,使工厂类更加灵活。 在学习这两种模式时,理解其背后的意图和应用场景至关重要。通过实践和案例分析,可以更好地掌握它们的用法和优缺点,从而在实际...

    设计模式——原版的设计模式

    抽象工厂模式提供了一组接口,用于创建相关或依赖对象的家族,而无需指定具体类;建造者模式将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示;原型模式通过复制已有对象来创建新对象。 2. **...

    【资源免费下载】Java代码积累丨大话设计模式(Java实现版本)、线程协作

    抽象工厂模式 原型模式 建造者模式 单例模式 结构型模式 队列模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 行为模式(类行为模式) 解释器模式 模板方法模式 行为模式(对象行为模式) 策略模式 ...

    抽象工厂模式 - PHP版

    抽象工厂模式是一种高级的设计模式,属于创建型模式,它提供了一种创建对象族的方法,而无需指定其具体的类。在PHP中,抽象工厂模式尤其适用于那些需要创建一系列相关或相互依赖的对象,而又不希望硬编码具体类名的...

    设计模式之PHP项目应用(简单工厂模式:计算器)

    1)程序功能:用简单工厂模式实现计算器功能,采用PHP编写。 2)程序详解地址:http://blog.csdn.net/clevercode/article/details/45692995。 3)原创作品,出自"CleverCode的博客",分类为《设计模式之PHP项目应用...

    设计模式.pdf

    工厂方法模式通过子类化对扩展是开放的,但对修改原工厂类是封闭的,这符合开闭原则。抽象工厂模式则适合于提供一系列产品族,且产品的种类变动不频繁,产品之间有较强的依赖关系。 在C++中实现这些工厂模式时,...

    单例模式,工厂模式,抽象工厂模式,建造者模式VS2019 C++代码实现

    主要实现了4种设计创建型模式的示例,分别是单例模模式(Singleton Pattern),工厂模式(Factory pattern),抽象工厂模式(Abstract Factory pattern),建造者模式(Builder Pattern) 使用人群:希望对这四种模式有所...

    [浪曦原创]JAVA设计模式 第4讲 抽象工厂(jzkangta)

    学习这个模式时,需要注意理解抽象工厂模式与其他创建型模式(如简单工厂、工厂方法和建造者模式)的区别,以及如何在实际项目中合理选择和应用。同时,也要关注模式的优缺点,例如它能很好地封装变化,但可能会导致...

    Java设计模式——工厂设计模式详解

    1. 简单工厂(Simple Factory):简单工厂是工厂模式三种形态中结构最为简单的。主要有一个静态方法,用来接受参数,并根据参数来决定返回实现同一接口的不同类的实例。 简单工厂的优点是可以动态决定应该实例化哪...

    JavaScript中的工厂模式:构建灵活的对象创建机制

    通过本文的介绍,你应该能够理解工厂模式的基本概念,掌握在JavaScript中实现工厂模式的方法,并能够在实际项目中应用这一模式来构建灵活的对象创建机制。 通过本文的介绍,你应该能够理解工厂模式的重要性,掌握在...

    软件设计模式经典案例讲解

    本篇文章将深入探讨几种经典的设计模式:模板方法模式、外观模式、代理模式、装饰器模式、桥模式、工厂方法模式以及组合模式。 首先,模板方法模式(Template Method Pattern)是行为设计模式的一种,它定义了操作...

    head first 设计模式原料工厂C++实现

    这些方法是工厂模式的核心,它们允许子类(可能代表不同品牌的原料供应商)重写这些方法以创建特定品牌的原料。 **多态性**: - `Pizza` 类中的原料成员(如 `Dough`, `Cheese`, `Clams`, `Pepperoni`)都是指向...

    23种设计模式.doc

    工厂模式分为简单工厂模式和工厂方法模式。 2. **工厂方法模式**:工厂方法模式是工厂模式的进一步扩展,它定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。这样,工厂方法让类的实例化推迟到子类中...

    java 设计模式试题

    常见的创建型模式包括工厂方法模式、抽象工厂模式、单例模式等。 ### 5. 依赖倒转原则 依赖倒转原则(D) 强调依赖于抽象而不是具体实现。这意味着我们应该通过接口而不是实现类来进行编程。这样做可以降低模块间的...

    java设计模式_原创

    1. 创建型设计模式:这类模式关注对象的创建过程,它们包括单例模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式。单例模式确保一个类只有一个实例,并提供全局访问点;工厂方法模式定义一个用于创建对象的...

Global site tag (gtag.js) - Google Analytics