工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory)-----基于JAVA语言
来源:互联网 发布:php curl发送get请求 编辑:程序博客网 时间:2024/05/16 11:00
工厂方法模式分为三种:普通工厂模式 多个工厂方法模式 静态工厂方法模式
1.普通工厂模式,就是建立一个工厂类,对实现了同一接口的产品类进行实例的创建
例子:
2.多个工厂方法模式 是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象。
3.静态工厂方法模式,将上面的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。
例子:
注:这个模式的好处就是,如果你现在想增加一个功能:发送及时信息,则只需做一个实现类实现Sender接口, 同时做一个工厂类,实现Provider接口就可以了,无需去改动现成的代码。 这样做,拓展性较好。
1.普通工厂模式,就是建立一个工厂类,对实现了同一接口的产品类进行实例的创建
例子:
//发送短信和邮件的接口 public interface Sender { public void Send(); } //发送邮件的实现类 public class MailSender implements Sender { public void Send() { System.out.println("发送邮件!"); } } //发送短信的实现类 public class SmsSender implements Sender { public void Send() { System.out.println("发送短信!"); } } //创建工厂类 public class SendFactory { //工厂方法 public Sender produce(String type) { if ("mail".equals(type)) { return new MailSender(); } else if ("sms".equals(type)) { return new SmsSender(); } else { System.out.println("请输入正确的类型!"); return null; } } } //测试类 public class FactoryTest { public static void main(String[] args) { SendFactory factory = new SendFactory(); Sender sender = factory.produce("sms"); sender.Send(); } }
2.多个工厂方法模式 是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象。
//发送短信和邮件的接口 public interface Sender { public void Send(); } //发送邮件的实现类 public class MailSender implements Sender { public void Send() { System.out.println("发送邮件!"); } } //发送短信的实现类 public class SmsSender implements Sender { public void Send() { System.out.println("发送短信!"); } } //创建工厂类 public class SendFactory { //工厂方法 public Sender produce(String type) { if ("mail".equals(type)) { return new MailSender(); } else if ("sms".equals(type)) { return new SmsSender(); } else { System.out.println("请输入正确的类型!"); return null; } } } //测试类 public class FactoryTest { public static void main(String[] args) { SendFactory factory = new SendFactory(); Sender sender = factory.produce("sms"); sender.Send(); } }
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(); } }
抽象工厂模式(Abstract Factory)
例子:
//发送短信和邮件的接口 public interface Sender { public void Send(); } //发送邮件的实现类 public class MailSender implements Sender { public void Send() { System.out.println("发送邮件!"); } } //发送短信的实现类 public class SmsSender implements Sender { public void Send() { System.out.println("发送短信!"); } } //给工厂类一个接口 public interface Provider { public Sender produce(); } //两个工厂的实现类 public class SendMailFactory implements Provider { public Sender produce(){ return new MailSender(); } } public class SendSmsFactory implements Provider{ public Sender produce() { return new SmsSender(); } } //测试类 public class Test { public static void main(String[] args) { Provider provider = new SendMailFactory(); Sender sender = provider.produce(); sender.Send(); } }
注:这个模式的好处就是,如果你现在想增加一个功能:发送及时信息,则只需做一个实现类实现Sender接口, 同时做一个工厂类,实现Provider接口就可以了,无需去改动现成的代码。 这样做,拓展性较好。
阅读全文
0 0
- 工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory)-----基于JAVA语言
- 简单工厂,Factory Method(工厂方法)和Abstract Factory(抽象工厂)模式
- 创建型模式之抽象工厂模式(Abstract Factory)- 工厂方法模式(Factory Method)
- Java设计模式二:抽象工厂模式(Abstract Factory)/工厂方法(Factory Method)
- Understanding Factory Method and Abstract Factory Patterns(理解工厂方法模式和抽象工厂模式)
- 设计模式:工厂方法模式(Factory Method)和抽象工厂模式(Abstact Factory)
- 设计模式:工厂方法模式(Factory Method)和抽象工厂模式(Abstact Factory)
- 工厂模式(Factory Pattern)之简单工厂,工厂方法模式(Factory Method Pattern),抽象工厂模式(Abstract Factory Pattern)
- 三个工厂模式(Simple Factory & Factory Method & Abstract Factory)
- 抽象工厂模式(Abstract Factory Method Pattern)
- Java 之工厂方法和抽象工厂模式(Abstract Factory)
- 设计模式——工厂方法模式(FactoryMethod)和抽象工厂模式(Abstract Factory)
- 抽象工厂(Abstract Factory)模式
- 抽象工厂模式(Abstract Factory)
- 抽象工厂(Abstract Factory)模式
- 抽象工厂模式(Abstract Factory)
- 抽象工厂模式(Abstract Factory)
- 抽象工厂模式(Abstract Factory)
- C
- String与StringBuilder
- 《大话设计模式》Python版代码实现
- 一日一文(3)
- 记一次apache错误日志一直出现“child pid 4134 exit signal Segmentation fault (11)”问题
- 工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory)-----基于JAVA语言
- 知识点
- 最小公倍数和最大公约数
- tensorflow实现车牌识别
- android替换Glide通讯组件为Okhttp并监控加载进度
- flex 布局
- mongodb查询------个性化fields
- Mariadb数据库的部署及管理
- Java学习中遇到的问题