"工厂模式"-之Java,Android面试必问设计模式(1/9)
来源:互联网 发布:什么叫数据库营销 编辑:程序博客网 时间:2024/06/07 10:11
1.工厂方法模式:分三种
这是我给大家介绍的8个面试必问的设计模式的第一类:工厂模式.学完这8类必会的那么面试就不会有什么问题了,其余的无非都是多态的演变.好的开始讲解第一类:
1.普通工厂
建立一个工厂类,对"实现同一接口"的一些类进行实例的创建.
2.多个工厂
在普通的基础上,如果传递的字符串出错,就不能创建,并提供多个工厂方法,分别创建对象.
3.静态工厂方法
将多个工厂的方法改成"静态",不用创建实例,直接调用即可
1.普通工厂:
/** * 普通工厂类: * 1.一个接口 * 2.多个具体实现了接口的"类" * 3.创建一个发送信息"工厂类" * 包含一个统一的方法:对实现了"同一接口的类",进行实例的创建. */ //发送接口 interface Send { public void send(); } //发送短信类,实现发送类 class SendMessage implements Send { @Override public void send() { System.out.println("发送了 短信..."); } } //发送邮件类,实现发送类 class SendEmail implements Send { @Override public void send() { System.out.println("发送了 邮件..."); } } //发送工厂类 class SendFactory { public Send method(String type) { //根据传值的不同进行判断,得到不同的对象. if ("message".equals(type)) { return new SendMessage(); } else if ("email".equals(type)) { return new SendEmail(); } else { System.out.println("输入类型不正确"); return null; } } } //测试类: public class Test { public static void main(String[] args) { SendFactory sf = new SendFactory(); final Send email = sf.method("email"); email.send(); final Send message = sf.method("message"); message.send(); final Send phone = sf.method("phone"); if (phone != null) { phone.send(); } } }
打印结果:
发送了 邮件...发送了 短信...输入类型不正确
2.多个工厂模式:
/** * 多个工厂类: * 1.(Ps)在普通的基础上加上升级:每个实例"都创建"对应的方法 * 2.后续直接调用对应方法即可,防止了输入字符串出错 */ public class SendFactory { //指指定的多个方法,防止出错 public Send sendEmailmethod() { return new SendEmail(); } public Send sendMessageMethos() { return new SendMessage(); } }//测试类: public class Test { public static void main(String[] args) { SendFactory sf = new SendFactory(); //因为有选择了,所以不会出错 final Send email = sf.sendEmailmethod(); email.send(); final Send message = sf.sendMessageMethos(); message.send(); }}
打印结果:
发送了 邮件...发送了 短信...
3.静态工厂模式:
/** * 就改成个静态即可. * (Ps+)在多个工厂的基础上,把工厂的中的方法改成静态,那么等下就不用new 工厂类了 */ //发送工厂类 public class SendFactory { //指指定的多个方法,防止出错 //只需把这里改成static 方法即可 public static Send sendEmailmethod() { return new SendEmail(); } public static Send sendMessageMethos() { return new SendMessage(); } }//测试类:public class Test { public static void main(String[] args) { //因为是静态方法,所以直接调用即可,不用new 工厂类 Send email = SendFactory.sendEmailmethod(); email.send(); final Send message = SendFactory.sendMessageMethos(); email.send(); }}
打印结果:
发送了 邮件...发送了 短信...
0 0
- "工厂模式"-之Java,Android面试必问设计模式(1/9)
- "抽象工厂模式"-之Java,Android面试必问设计模式(2/9)
- "享元模式"-之Java,Android面试必问设计模式(9/9)
- "单例模式"-之Java,Android面试必问设计模式(3/9)
- "建造者模式"-之Java,Android面试必问设计模式(4/9)
- "适配器模式"-之Java,Android面试必问设计模式(5/9)
- "装饰模式"-之Java,Android面试必问设计模式(6/9)
- "策略模式"-之Java,Android面试必问设计模式(7/9)
- "观察者模式"-之Java,Android面试必问设计模式(8/9)
- JAVA 面试32问||设计模式||程序员面试之葵花宝典
- Android设计模式之工厂设计模式
- java 设计模式-创建模式之工厂方法模式1
- Java设计模式之工厂设计模式
- [java]设计模式之工厂设计模式
- Java设计模式之工厂设计模式
- Java设计模式之工厂设计模式
- JAVA设计模式之工厂设计模式
- java设计模式之工厂设计模式
- java中HelloWorld原来还可以这样玩
- mysql 批量kill进程
- Parcelable小记
- C++ 学习 笔记(菜鸟级,自我备忘)
- 单片机串口程序1
- "工厂模式"-之Java,Android面试必问设计模式(1/9)
- mybatis中foreach用法
- Android 图片加载缓存库 Picasso 的故事二
- Eclipse中安装genymotion插件
- Java 类的热替换 —— 概念、设计与实现
- 【资源】我的图片
- 全部捕获异常之后重启程序
- iOS自定义 URL Scheme 完全指南
- (顶部/底部)导航方案(1)TabBar+StackLayout