Java学习笔记——Java工厂模式之简单工厂
package com.app;
import java.util.Date; /*
* 工厂模式:简单工厂、工厂方法、抽象工厂
*
* */
public class Test0718_Factory {
public static void main(String[] args) {
Fruit.FruitJudge(new Date());
Fruit.FruitJudge(5);
Fruit.FruitJudge(new Fruit());
Fruit.FruitJudge(new Cherry());
Fruit.FruitJudge(new Apple());
System.out.println(); Fruit fruit1 = Fruit.getFruit(1);
Fruit fruit2 = Fruit.getFruit(2); fruit1.grow();
fruit2.grow();
((Apple)fruit2).m1();
}
}
class Fruit {
public void grow(){
System.out.println("水果在生长");
} public static void FruitJudge(Object obj){
if(! (obj instanceof Fruit)){
System.out.println("参数类型不兼容");
} else {
if(obj instanceof Cherry){
Cherry f = (Cherry)obj;//造型,高->低
f.grow();
} else if(obj instanceof Apple){
Apple f = (Apple)obj;
f.grow();
f.m1();//强转后,可以明确调用子类新加的成员
} else {
Fruit f = (Fruit)obj;
f.grow();
}
}
} //简单工厂模式,根据值的不同返回不同的子类实例
public static Fruit getFruit(int code){
Fruit obj = null;
if(code==1) {
obj = new Cherry();
} else if(code==2) {
obj = new Apple();
} else {
obj = new Fruit();
}
return obj;
}
}
class Cherry extends Fruit {
public void grow(){
System.out.println("樱桃在生长");
}
}
class Apple extends Fruit {
public void grow(){
System.out.println("苹果在生长");
}
public void m1(){
System.out.println("苹果的m1");
}
}
执行结果:
---------- 运行 ----------
参数类型不兼容
参数类型不兼容
水果在生长
樱桃在生长
苹果在生长
苹果的m1
樱桃在生长
苹果在生长
苹果的m1
输出完成 (耗时 0 秒) - 正常终止
Java学习笔记——Java工厂模式之简单工厂的更多相关文章
- Java设计模式之(工厂模式)--简单工厂模式--工厂方法模式--抽象工厂模式
工厂模式: 工厂模式可以分为三类: 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method) 3)抽象工厂模式(Abstract Factory) 简单工厂模 ...
- 再起航,我的学习笔记之JavaScript设计模式05(简单工厂模式)
我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 前几 ...
- [java学习笔记]java语言核心----面向对象之this关键字
一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理: 代表的是当前对象. this就是所在函数 ...
- [java学习笔记]java语言核心----面向对象之构造函数
1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用: 给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...
- Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---工厂模式之简单工厂
简单工厂:工厂依据传进的参数创建相应的产品. http://www.cnblogs.com/DelphiDesignPatterns/archive/2009/07/24/1530536.html { ...
- 设计模式(Java版)-创建型模式之简单工厂模式
前言:这段时间在学习设计模式,本人也是小菜一枚(所以写的如果有错误的地方请大大们给予指出).这个东西也是我一直想学习的,从点点滴滴做起,记录下自己每天的领悟! 一.工厂模式的动机 在软件系统中,经常面 ...
- Java设计模式---工厂模式(简单工厂、工厂方法、抽象工厂)
工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类.工厂模式的形态工厂模式主要用一下几种形态:1:简单工厂(Simple Factory).2:工厂方法(Factory M ...
- 【LabVIEW技巧】工厂模式_简单工厂
前言 上一个文章介绍了如何学习LabVIEW OOP,简要的提及了一些OOP学习中注意的事项,许多文章的读者反映写的太范,后文会逐步缩小范围,讨论在LabVIEW中各个模式的应用. 工厂模式概述 工厂 ...
- 设计模式之工厂模式之简单工厂(php实现)
github源码地址: git@github.com:ZQCard/design_pattern.git 1.简单工厂模式 特点:将调用者与创建者分离,调用者直接向工厂请求,减少代码的耦合.提高系统的 ...
随机推荐
- java提高数据库访问效率代码优化
package com.jb.jubmis.comm; import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQL ...
- SQLServer获取随机数据
1.比较常见和好用的一种 SELECT TOP 10 *, NEWID() AS randomFROM tableORDER BY random --newid函数会随机生成一个guid,很长的一个字 ...
- (1)html开头解说与案例演示
看完后也可以参考http://www.cnblogs.com/csxiaoyu/p/5228889.html http://www.cnblogs.com/zfc2201/p/5429252.html ...
- hdu1213 How Many Tables
How Many Tables Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- PHPCMS教程
第一章 模版 参见:http://blog.163.com/zh_astro/blog/static/1842084562011430430419/ 碎片管理: 在模版页面需要添加碎片的位置加上代码{ ...
- 如何自学Java
转自:http://www.360doc.com/content/12/0624/19/5856897_220191533.shtml JAVA自学之路 JAVA自学之路 一:学会选择 为了就业, ...
- 【JavsScript】当 JavaScript 从入门到提高前需要注意的细节:变量部分
在javaScript中变量使用var声明的变量是当前作用域的变量,不使用var声明的则肯定是全局变量. http://msdn.microsoft.com/zh-cn/library/dn64545 ...
- window.onload与$.ready的差别
在做图书管理系统的时候.实用到window.onload(){}方法.可是遇到了一个问题.就是怎么都不运行,究竟是为什么呢?愁了半天.后来经师姐指点改用了$.ready(){}. 在我的浅浅的了解中觉 ...
- qt creator中使用qwt插件
前提:我用mingw编译的qwt. 将qwt插件集成到qt designer非常easy.仅仅要把qwt编译的qwt_designer_plugin.dll复制到C:\Qt\Qt5.3.1\5.3\m ...
- python代码查询港澳通行证办理进度
查询港澳通行证办理进度查询的python 3.3代码.利用socket请求相关网站,获得结果后利用正则找出办理进度.其实用urllib代码会更简洁,不过当时在下还不熟悉urllib~ 直接上代码: i ...