如何制作一个网站,网站建设对比,做网站需要几个服务器,广州手机网站建设费用工厂方法模式适合于对实现了同一接口或继承了同一父类的一些类进行实例的创建。一般是通过定义一个工厂类#xff0c;并在其方法中实现对具有上述特点的类对象的创建。 根据具体产生类对象的方法定义形式#xff0c;又可以将其分为普通工厂方法模式、多个工厂方法模式和静态工… 工厂方法模式适合于对实现了同一接口或继承了同一父类的一些类进行实例的创建。一般是通过定义一个工厂类并在其方法中实现对具有上述特点的类对象的创建。 根据具体产生类对象的方法定义形式又可以将其分为普通工厂方法模式、多个工厂方法模式和静态工厂方法模式。 一、普通工厂方法模式 常见的经典写法如下以发送邮件和短信为例 1.定义邮件类和短信类具有的共同接口 1 interface Sender{
2
3 public void sender();
4
5 } 2.定义邮件类和短信类 1 class MailSender implements Sender{
2
3 Override
4 public void send() {
5 System.out.println(发送邮件);
6 }
7
8 } 1 class SmsSender implements Sender{
2
3 Override
4 public void send() {
5 System.out.println(发送短信);
6 }
7
8 } 3.定义工厂类 1 class SenderFactory {2 3 public Sender produce(String type) {4 if (type.equals(mail)) {5 return new MailSender();6 } else if (type.equals(sms)) {7 return new SmsSender();8 } else {9 return null;
10 }
11 }
12
13 } 4.测试生成MailSender和SmsSender对象 1 package com.qqyumidi;2 3 public class FactoryMethodTest {4 5 public static void main(String[] args) {6 SenderFactory factory new SenderFactory();7 Sender mailSender factory.produce(mail);8 Sender smsSender factory.produce(sms);9 }
10
11 } 二、多个工厂方法模式 将普通工厂模式中的工厂类中创建类的方法从依赖于参数判断改为直接针对每种对象各自定义一个生产方法。 具体代码如下: 1 class SenderFactory {2 3 public Sender produceMail(){4 return new MailSender();5 }6 7 public Sender produceSms(){8 return new SmsSender();9 }
10
11 } 三、静态工厂方法模式 静态工厂方法模式与前面两种具体的方法定义不同在于方法被定义成静态的这样可以不通过创建工厂实例就能直接获取到目标类的对象。 1 class SenderFactory {2 3 public static Sender produceMail(){4 return new MailSender();5 }6 7 public static Sender produceSms(){8 return new SmsSender();9 }
10
11 } 对于工厂方法模式推荐使用第三种写法。 --------------------------------------------------------------------------------- 笔者水平有限若有错漏欢迎指正如果转载以及CV操作请务必注明出处谢谢 分类: 设计模式 本文转自Windstep博客园博客原文链接http://www.cnblogs.com/lwbqqyumidi/p/3744842.html如需转载请自行联系原作者