java-设计模式(创建型)-【工厂模式】

1.FactoryMode(工厂模式)

定义:提供创建对象的接口,方便对象的创建。

2.静态工厂方法模式(Static Factory Method Mode)

定义:对于对象的创建,交给工厂类内部的静态方法实现。

使用场景:适用于基类的子类较少时,且基本不会再增加子类时。

坏处,当子类增加时,需要修改工厂类的内部,违背了开闭原则。

基类与子类:

public interface Sender {

	void send ();
}

class SenderMail implements Sender
{

	@Override
	public void send() {
		// TODO Auto-generated method stub
		System.out.println("发送邮件。");
	}

}
class SenderSms implements Sender
{

	@Override
	public void send() {
		// TODO Auto-generated method stub
	   System.out.println("发送短信。");
	}

}

  静态工厂模式:

//静态工厂模式方法:通过工厂内部的方法产生对象。
//缺点:当基类的子类增加时,需要修改工厂类里的方法。
//     违背了开闭原则(增加接口的扩展,减少内部的修改)
class SenderFactory {
	public static Sender produceMail()
	{
		return new SenderMail();
	}
	public static Sender produceSms()
	{
		return new SenderSms();
	}
}

  测试:

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Sender mail=SenderFactory.produceMail();
        mail.send();
        Sender sms=SenderFactory.produceSms();
        sms.send();
	}

}

  运行:

发送邮件。
发送短信。

 3.抽象工厂模式(Abstract Factory)

定义:对于对象的创建,交给抽象工厂的子类工厂去实现。

使用场景:当基类的子类增加时,我可以增加对于的工厂子类去创建对象,符合开闭原则。

抽象工厂:

interface SenderFactory {

	  Sender produce();
}
class MailSenderFactory implements SenderFactory
{
	@Override
	public  Sender produce() {
		// TODO Auto-generated method stub
		return new SenderMail();
	}
}
class SmsSenderFactory implements SenderFactory
{
    @Override
	public   Sender produce() {
		// TODO Auto-generated method stub
		return new SenderSms();
	}
}

  测试:

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Sender mail=new MailSenderFactory().produce();
        mail.send();
        Sender sms=new SmsSenderFactory().produce();
        sms.send();
	}

}

  运行:

发送邮件。
发送短信。

  

时间: 2024-11-13 04:26:44

java-设计模式(创建型)-【工厂模式】的相关文章

设计模式-创建型-工厂模式

工厂设计模式: 顾名思义,该模式是用来生产对象的.在面向对象的设计模式中,万物皆对象,若使用new来创建对象,就会对该对象产生强耦合,加入我们需要更换该对象,那么使用该对象的对象都需要进行修改,这显然违背了开闭原则(OCP).如果我们使用工厂来产生对象,我们只需要与这个工厂打交道就可以了,无需关心具体的对象,达到解耦的目的. 接下来我们从实际的案例出发,从无工厂到有工厂的区别. 去披萨店订购披萨,首先披萨的种类很多(CheesePizza.GreekPizza.DurianPizza{等),披萨

Java设计模式之二工厂模式

在上一篇中我们学习了单例模式,介绍了单例模式创建的几种方法以及最优的方法.本篇则介绍设计模式中的工厂模式,主要分为简单工厂模式.工厂方法和抽象工厂模式. 简单工厂模式 简单工厂模式是属于创建型模式,又叫做静态工厂方法模式.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.调用只需要告诉工厂类所需要的类型,工厂类就会返回需要的产品类工厂的子类. 可以说是工厂模式中最简单的一种. 打个比方,我们在电脑经常玩游戏,我们只需要告诉电脑我们要玩什么游戏,电脑就会打开这个游戏,我们并不需要关心游戏是

JAVA设计模式(01):创建型-工厂模式【工厂方法模式】(Factory Method)

简单工厂模式尽管简单,但存在一个非常严重的问题.当系统中须要引入新产品时,因为静态工厂方法通过所传入參数的不同来创建不同的产品,这必然要改动工厂类的源码,将违背"开闭原则".怎样实现添加新产品而不影响已有代码?工厂方法模式应运而生,本文将介绍另外一种工厂模式--工厂方法模式. 1 日志记录器的设计 Sunny软件公司欲开发一个系统执行日志记录器(Logger).该记录器能够通过多种途径保存系统的执行日志,如通过文件记录或数据库记录,用户能够通过改动配置文件灵活地更换日志记录方式. 在设

java设计模式--创建型模式

2016-04-24 10:10:34 创建型模式:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式 注意:工厂模式可以分为三类: 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method) 3)抽象工厂模式(Abstract Factory)  这三种模式从上到下逐步抽象,并且更具一般性.GOF在<设计模式>一书中将工厂模式分为两类:工厂方法模式(Factory Method)与抽象工厂模式(Abstract Factory).将简单工厂模式

设计模式之创建型工厂模式

通过对产品类的抽象使其创建业务主要负责用于创建多类产品的实例.创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象.定义一个创建对象的接口,让其子类决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行,最终生成复杂对象.主要解决接口选择的问题. 您需要一辆汽车,可以直接从工厂里提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现. var PageFactory = function(type, content) { if(this instan

Java设计模式学习三-----工厂模式

工厂模式 工厂模式(Factory Pattern)是Java中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象. 工厂模式的思路:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行.使用过程中做好接口选择. 优点:1.一个调用者向创建一个对象,只要知道名称就可以了.2.扩展性高,如果想增加一个产品,只要扩展一个工厂

Java 设计模式之抽象工厂模式

抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂.该超级工厂又称为其他工厂的工厂.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类.每个生成的工厂都能按照工厂模式提供对象. 介绍 意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 主要解决 主要解决接口选择的问题. 何时使用 系统的产品有多于一个的产品族,而系统只消费其中某一族的产品

JAVA设计模式之抽象工厂模式 (转)

前面已经介绍过简单工厂模式和工厂方法模式,这里继续介绍第三种工厂模式-抽象工厂模式,还是以汽车的制造为例. 例子背景: 随着客户的要求越来越高,宝马车需要不同配置的空调和发动机等配件.于是这个工厂开始生产空调和发动机,用来组装汽车.这时候工厂有两个系列的产品:空调和发动机.宝马320系列配置A型号空调和A型号发动机,宝马230系列配置B型号空调和B型号发动机. 概念: 抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象.比如宝马320系列使用空调型号A和发动机型号A,而宝

java设计模式2--抽象工厂模式(Abstract Factory)

本文地址:http://www.cnblogs.com/archimedes/p/java-abstract-factory-pattern.html,转载请注明源地址. 抽象工厂模式(别名:配套) 提供一个创建一系列(相互依赖)对象的接口,而无需指定它们具体的类. 概述 当系统准备为用户提供一系列相关的对象,又不想让用户代码和创建这些对象的类形成耦合时,就可以使用抽象工厂方法模式来设计系统.抽象工厂模式的关键是在一个抽象类或接口中定义若干个抽象方法,这些抽象方法分别返回某个类的实例,该抽象类或

(1)java设计模式之简单工厂模式

一:简单工厂模式的优点          --->在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例. --->模式的核心是工厂类.这个类含有必要的逻辑判断,可以决定在什么时候创建哪一个登录验证类的实例,而调用者则可以免除直接创建对象的责任.简单工厂模式通过这种做法实现了对责任的分割,当系统引入新的登录方式的时候无