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.简单工厂模式 特点:将调用者与创建者分离,调用者直接向工厂请求,减少代码的耦合.提高系统的 ...
随机推荐
- centos 安装redis php
$ wget http://download.redis.io/releases/redis-3.0.7.tar.gz $ tar xzf redis-3.0.7.tar.gz $ cd redis- ...
- PostQueuedCompletionStatus
PostQueuedCompletionStatus函数,向每个工作者线程都发送—个特殊的完成数据包.该函数会指示每个线程都“立即结束并退出”.下面是PostQueuedCompletionStatu ...
- windows server 2008 支持 .net framework 4.0
windows server 2008平台下需要安装sp1,或打KB958854补丁,IIS7.0才能支持.net framework 4.0. 否则,IIS7.0中的应用程序虽然被配置为.net 4 ...
- 利用HTML5开发Android(7)---HTML5本地存储之Database Storage
在上一篇<HTML5本地存储之Web Storage篇>中,简单介绍了如何利用localStorage实现本地存储:实际上,除了sessionStorage和localStorage外,H ...
- C++标准库概述 [转]
C++标准库的所有头文件都没有扩展名. C++标准库的内容总共在50个标准头文件中定义,其中18个提供了C库的功能.<cname>形式的标准头文件[<complex>例外]其内 ...
- CentOS FireFox Flash Player
yum install *firefox* yum install flash-plugin
- WSO2 Stratos手册
WSO2 Stratos是最完整的企业级cloud solution,提供了一个开放的PaaS平台,相比于其他的PaaS平台来说,Stratos支持更多核心的服务.Stratos2.0对那些想从异构环 ...
- 【好文翻译】测试必看:使用Spire.XLS来生成自动化报表!
Download C# project - 7.1 KB 介绍 在我的编程博客中,我经常会比较不同算法或原理的性能特征.我常常会把性能日志(如花费时间)输出到控制台或者文本文件,然后复制到电子表格中 ...
- cocos2dx A*算法
头文件和源文件拷贝到项目中就能用了! have fun 使用cocos2dx 3.2 原理都一样 淡蓝色的点是地图 深蓝色的点是障碍物 绿色的点是路径 暗绿色的点是搜寻过的点 红色的点是按路径行走的点 ...
- Javascript 异步加载详解
Javascript 异步加载详解 本文总结一下浏览器在 javascript 的加载方式. 关键词:异步加载(async loading),延迟加载(lazy loading),延迟执行(lazy ...