学习设计模式笔记之工厂模式1

本文系个人的笔记,是总结大神的讲解,不是本人原创,重要的事情说三遍。

1、工厂方法模式(Factory Method)

工厂方法模式分为三种:

1.1、普通工厂模式

        就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。简单理解就是将必须用到的方法做成接口,然后需要实现方法的类都去实现这一个接口,通过一个factory的大工厂类对外交互,所有需要使用这些实现接口的类的时候只需要new一个工厂,然后通过工厂类去实例化内部的方法。好处是当需要拓展的时候只需要增加需要的类,然后直接给工厂中加入实例化的方法,使用的时候直接通过工厂去调用。相关代码:

public interface Sender {     //上面是共用接口
	void Send();
}

public class SendMail implements Sender {                     //发邮件的服务

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

}
public class SendMessage implements Sender {                  //发送短信的接口

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

}
public class Factory {                                        //工厂类,用于管理所有实现了接口的类
	public Sender produce(String sendType) {
		if(sendType.equals("SMS")) {
			return new SendMessage();
		}else if(sendType.equals("Mail")) {
			return new SendMail();
		}else {
			System.out.println("选择失败");
			return null;
		}
	}
}
public class TestNormalFactory {                             //测试

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Factory factory = new Factory();
		Sender sender = factory.produce("SMS");
		sender.Send();
	}

}
输出结果:发送短信

1.2、多个工厂模式
       这个工厂模式就不做过多的解释了,就是普通工厂模式中在创建工厂的时候在工厂类中为每一个需要调用的类写一个工厂方法,使用的时候实例化工厂然后调用相应的方法。具体代码贴一下。

public class SendFactory {  

   public Sender produceMail(){  
        return new MailSender();  
    }  
      
    public Sender produceSms(){  
        return new SmsSender();  
    }  
}  

1.3、 静态工厂方法模式

        将上面的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。

public class SendFactory {  
     
    public static Sender produceMail(){  
        return new MailSender();  
    }  
      
    public static Sender produceSms(){  
        return new SmsSender();  
    }  
}  


public class FactoryTest {  
  
  public static void main(String[] args) {      
        Sender sender = SendFactory.produceMail();  
        sender.Send();  
    }  
}  






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值