学习设计模式笔记之工厂模式1
2016-03-08 17:47
197 查看
本文系个人的笔记,是总结大神的讲解,不是本人原创,重要的事情说三遍。
1、工厂方法模式(Factory Method)
工厂方法模式分为三种:
1.1、普通工厂模式
就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。简单理解就是将必须用到的方法做成接口,然后需要实现方法的类都去实现这一个接口,通过一个factory的大工厂类对外交互,所有需要使用这些实现接口的类的时候只需要new一个工厂,然后通过工厂类去实例化内部的方法。好处是当需要拓展的时候只需要增加需要的类,然后直接给工厂中加入实例化的方法,使用的时候直接通过工厂去调用。相关代码:public interface Sender { //上面是共用接口
void 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();
}
}
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();
}
}
相关文章推荐
- PropertyChangeListener简单理解
- 什么是设计模式
- 设计模式之创建型模式 - 特别的变量问题
- 七、设计模式——装饰模式
- 设计模式总结
- 设计模式之创建型模式
- 浅谈设计模式的学习
- C#编程中使用设计模式中的原型模式的实例讲解
- 使用设计模式中的工厂方法模式进行C#编程的示例讲解
- 实例解析C#设计模式编程中简单工厂模式的使用
- 详解C#设计模式编程中生成器模式的使用
- 深入解析C#设计模式编程中对建造者模式的运用
- C++设计模式编程中的观察者模式使用示例
- 举例解析设计模式中的工厂方法模式在C++编程中的运用
- PHP设计模式之装饰者模式代码实例
- php设计模式之单例模式实例分析
- 介绍php设计模式中的工厂模式
- PHP设计模式之适配器模式代码实例
- asp.net 简单工厂模式和工厂方法模式之论述