设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 工厂模式(FactoryMethod) - Java实现
2017-07-01 00:16
906 查看
设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 工厂模式(FactoryMethod)
是一种代替new的操作的一种模式。可以给系统带来更大的可扩展性和尽量少的修改量。
工厂模式分为三种:普通工厂、多个工厂、静态工厂。
1、普通工厂
1.1、说明:
(1)Sender 接口;
(2)MailSender 实现类;
(3)SmsSender 实现类;
(4)SimpleFactory 简单工厂。
1.2、Java实现,代码如下:
(1)Sender
(2)MailSender
(3)SmsSender
(4)SimpleFactory
(5)Test
输出:
mail send !
sms send !
2、多个工厂
2.1、说明:
(1)Sender 接口(同1);
(2)MailSender 实现类(同1);
(3)SmsSender 实现类(同1);
(4)ManyFactory 多个工厂。
2.2、Java实现,代码如下:
(1)Sender(同1)
(2)MailSender(同1)
(3)SmsSender(同1)
(4)ManyFactory
(5)Test
输出:
mail send !
sms send !
3、静态工厂(推荐)
3.1、说明:
(1)Sender 接口(同1);
(2)MailSender 实现类(同1);
(3)SmsSender 实现类(同1);
(4)Factory 静态工厂(2种方法变为静态)。
3.2、Java实现,代码如下:
(1)Sender(同1)
(2)MailSender(同1)
(3)SmsSender(同1)
(4)Factory
(5)Test
输出:
mail send !
sms send !
是一种代替new的操作的一种模式。可以给系统带来更大的可扩展性和尽量少的修改量。
工厂模式分为三种:普通工厂、多个工厂、静态工厂。
1、普通工厂
1.1、说明:
(1)Sender 接口;
(2)MailSender 实现类;
(3)SmsSender 实现类;
(4)SimpleFactory 简单工厂。
1.2、Java实现,代码如下:
(1)Sender
package com.java.designPattern.factoryMethod.simpleFactory; /** * 接口 * */ public interface Sender { public void send(); }
(2)MailSender
package com.java.designPattern.factoryMethod.simpleFactory; /** * 实现类 * */ public class MailSender implements Sender { @Override public void send() { System.out.println("mail send !"); } }
(3)SmsSender
package com.java.designPattern.factoryMethod.simpleFactory; /** * 实现类 * */ public class SmsSender implements Sender { @Override public void send() { System.out.println("sms send !"); } }
(4)SimpleFactory
package com.java.designPattern.factoryMethod.simpleFactory; /** * 简单工厂 * */ public class SimpleFactory { public Sender produce(String senderName) { if ("mail".equals(senderName)) { return new MailSender(); } else if ("sms".equals(senderName)) { return new SmsSender(); } else { System.out.println("wrong parameter !"); return null; } } }
(5)Test
package com.java.designPattern.factoryMethod.simpleFactory; /** * 测试类 * */ public class Test { public static void main(String[] args) { SimpleFactory factory = new SimpleFactory(); Sender mailSender = factory.produce("mail"); mailSender.send(); Sender smsSender = factory.produce("sms"); smsSender.send(); } }
输出:
mail send !
sms send !
2、多个工厂
2.1、说明:
(1)Sender 接口(同1);
(2)MailSender 实现类(同1);
(3)SmsSender 实现类(同1);
(4)ManyFactory 多个工厂。
2.2、Java实现,代码如下:
(1)Sender(同1)
(2)MailSender(同1)
(3)SmsSender(同1)
(4)ManyFactory
package com.java.designPattern.factoryMethod.manyFactory; /** * 多个工厂 * */ public class ManyFactory { public Sender produceMail() { return new MailSender(); } public Sender produceSms() { return new SmsSender(); } }
(5)Test
package com.java.designPattern.factoryMethod.manyFactory; /** * 测试类 * */ public class Test { public static void main(String[] args) { ManyFactory factory = new ManyFactory(); Sender mailSender = factory.produceMail(); mailSender.send(); Sender smsSender = factory.produceSms(); smsSender.send(); } }
输出:
mail send !
sms send !
3、静态工厂(推荐)
3.1、说明:
(1)Sender 接口(同1);
(2)MailSender 实现类(同1);
(3)SmsSender 实现类(同1);
(4)Factory 静态工厂(2种方法变为静态)。
3.2、Java实现,代码如下:
(1)Sender(同1)
(2)MailSender(同1)
(3)SmsSender(同1)
(4)Factory
package com.java.designPattern.factoryMethod.factory; /** * 静态工厂 * */ public class Factory { public static Sender produceMail() { return new MailSender(); } public static Sender produceSms() { return new SmsSender(); } }
(5)Test
package com.java.designPattern.factoryMethod.factory; /** * 测试类 * */ public class Test { public static void main(String[] args) { Sender mailSender = Factory.produceMail(); mailSender.send(); Sender smsSender = Factory.produceSms(); smsSender.send(); } }
输出:
mail send !
sms send !
相关文章推荐
- JAVA设计模式(24):创建型-工厂模式【工厂方法模式】(Factory Method)
- JAVA设计模式(01):创建型-工厂模式【工厂方法模式】(Factory Method)
- java设计模式之创建型模式-FactoryMethod ( 工厂方法 )
- 设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 简单工厂模式(Simple Factory Pattern) - Java实现
- Java设计模式圣经连载(02)-工厂方法(Factory Method)模式
- 浅谈JAVA设计模式之——工厂方法(FactoryMethod)
- 【设计模式基础】创建型模式 - 4 - 工厂方法(Factory Method)
- 设计模式(一)----- 工厂方法(FactoryMethod)----(JAVA版)
- 设计模式笔记-创建型模式之三--工厂方法:Factory Method
- PHP设计模式:创建型之工厂模式(Factory Method)
- [设计模式-创建型]工厂方法(Factory Method)
- 3.23种设计模式的Java版--Factory Method(工厂方法)
- [设计模式-创建型]工厂方法(Factory Method)
- [设计模式-创建型]工厂方法(Factory Method)
- 设计模式-3.3 Factory Method(工厂方法) 对象创建型模式
- Java设计模式二:抽象工厂模式(Abstract Factory)/工厂方法(Factory Method)
- JAVA设计模式——工厂方法(Factory Method)模式
- Java设计模式----------简单工厂类+工厂方法(FactoryMethod)
- 设计模式学习之工厂方法(Factory Method,创建型模式)(2)
- 设计模式 - 工厂方法(Factory Method) C++实现