java-工厂
class Mouse{
public void sayHi(){};
}
class DellMouse extends Mouse {
@Override
public void sayHi() {
System.out.println("产品:戴尔鼠标");
}
}
class HpMouse extends Mouse {
@Override
public void sayHi() {
System.out.println("产品:惠普鼠标");
}
}
class KeyBoard {
public void kick(){};
}
class HpKeyBoard extends KeyBoard {
@Override
public void kick() {
System.out.println("产品:惠普键盘");
}
}
class DellKeyBoard extends KeyBoard {
@Override
public void kick() {
System.out.println("产品:戴尔键盘");
}
}
//总的工厂接口
interface PcFactory {
public Mouse createMouse() ;
public KeyBoard createKeyBoard() ;
}
class HpFactory implements PcFactory {
@Override
public Mouse createMouse() {
return new HpMouse();
}
@Override
public KeyBoard createKeyBoard() {
return new HpKeyBoard();
}
}
class DellFactory implements PcFactory {
@Override
public Mouse createMouse() {
return new DellMouse();
}
@Override
public KeyBoard createKeyBoard() {
return new DellKeyBoard();
}
}
//当需要增加一个华硕工厂时:
class AsusMouse extends Mouse {
@Override
public void sayHi() {
System.out.println("产品:华硕鼠标");
}
}
class AsusKeyBoard extends KeyBoard {
@Override
public void kick() {
System.out.println("产品:华硕键盘");
}
}
class AsusFactory implements PcFactory {
@Override
public Mouse createMouse() {
return new AsusMouse();
}
@Override
public KeyBoard createKeyBoard() {
return new AsusKeyBoard();
}
}
public class NormFactory {
public static void main(String[] args) {
PcFactory hpFact = new HpFactory();
Mouse hpm = hpFact.createMouse();
KeyBoard hpkbd = hpFact.createKeyBoard();
PcFactory dellFact = new DellFactory();
Mouse dellm = dellFact.createMouse();
KeyBoard dellkbd = dellFact.createKeyBoard();
hpm.sayHi();
dellm.sayHi();
hpkbd.kick();
dellkbd.kick();
}
}
打印结果如下:
产品:惠普鼠标
产品:戴尔鼠标
产品:惠普键盘
产品:戴尔键盘
java-工厂的更多相关文章
- java工厂模式
(1)概念大白话:java工厂模式就是客户端(main函数)要创建对象觉得麻烦就让另外一个叫工厂的类帮它创建,然后自己每次要创建对象就叫工厂帮它弄,举个例子,在没有工厂这个"手下" ...
- java工厂类与反射机制
java 简单工厂类 2012-04-22 15:44:07| 分类: java | 标签:java工厂类 简单工厂类 |举报|字号 订阅 简单工厂模式需要由以下角色组成: 接口 ...
- Java工厂模式解耦 —— 理解Spring IOC
Java工厂模式解耦 -- 理解Spring IOC 最近看到一个很好的思想来理解Spring IOC,故记录下来. 资源获取方式 主动式:(要什么资源都自己创建) 被动式:(资源的获取不是我们创建, ...
- Java学习笔记——Java工厂模式之简单工厂
package com.app; import java.util.Date; /* * 工厂模式:简单工厂.工厂方法.抽象工厂 * * */ public class Test0718_Factor ...
- JAVA - 工厂模式
1. 简单工厂违背OCP(Open Close Principle)原则 , 即对增加开放,对修改关闭.如果要符合OCP原则,要针对接口编程. //简单工厂模式,违反了OCP原则 public cla ...
- Java 工厂模式(一)— 抽象工厂(Abstract Factory)模式
一.抽象工厂模式介绍: 1.什么是抽象工厂模式: 抽象工厂模式是所有形态的工厂模式中最为抽象和最具有一般性的一种形态,抽象工厂模式向客户端提供一个接口,使得客户端在不知道具体产品的情类型的情况下,创建 ...
- Java 工厂模式(一)— 简单工厂模式
一.什么是工厂模式: Java中的工厂模式主要是用来将有大量共同接口的类实例化.工厂模式可以动态的决定将哪一个类实例化,不必事先知道要实例化哪个类,将类的实例化的主动权交给工厂而不是类本身.我们常见的 ...
- java 工厂模式 转载
下面介绍三种设计模式,简单工厂模式,工厂方法模式,抽象工厂模式 思考如下场景: 有一天,林同学准备去买笔记本,他到商城发现有两款电脑他特别喜欢, 一款是 Macbook Pro, 另一款是 Surfa ...
- java工厂模式个人体会
上一边文章主要对单例模式做了一个总结,这篇文章主要对工厂模式也写一写个人的体会. 工厂模式是设计模式的一种,它主要是把实现产品对象的过程封装起来,然后提供给客户端相应的接口.工厂模式也是有3种,分别为 ...
- 自己理解的java工厂模式,希望对大家有所帮助
[http://www.360doc.com/content/11/0824/17/3034429_142983837.shtml] 这两天突然想学学java源代码,不过看到一篇文章说看java源代码 ...
随机推荐
- [React] Use CSS Transitions to Avoid a Flash of Loading State
Based on research at Facebook, we know that if a user sees a flash of loading state, they perceive t ...
- webpack资源管理
一.概况 ①webpack不仅可以打包JavaScript模块,甚至它把网页开发中的一切资源的都可以当作模块来打包处理 ②但是webpack本身不支持,它只是一个打包平台,其他资源,例如css.les ...
- [PHP] Laravel 5.5 打印SQL语句
[PHP] Laravel 5.5 打印SQL语句 四种方法 第一种方法: 打印SQL默认是关闭的,需要在/vendor/illuminate/database/Connection.php中打开. ...
- poj2398 Toy Storage 计算几何,叉积,二分
poj2398 Toy Storage 链接 poj 题目大意 这道题的大概意思是先输入6个数字:n,m,x1,y1,x2,y2.n代表卡片的数量,卡片竖直(或倾斜)放置在盒内,可把盒子分为n+1块区 ...
- SHOI做题记录
LOJ #2027. 「SHOI2016」黑暗前的幻想乡 考虑到每个公司一条边,那就等价于没有任何一家公司没有边. 然后就可以容斥+矩阵树定理,没了. LOJ #2028. 「SHOI2016」随机序 ...
- Nginx服务器作反向代理实现内部局域网的url转发配置
情景 由于公司内网有多台服务器的http服务要映射到公司外网静态IP,如果用路由的端口映射来做,就只能一台内网服务器的80端口映射到外网80端口,其他服务器的80端口只能映射到外网的非80端口.非80 ...
- <每日 1 OJ> -内存文件系统
蛮有意思的,主要考查链表和树结构的知识. 代码如下: ************************************************************************* ...
- mysql一对多表结构,查询一的信息的同时统计多的数量
res_resource_catalog表对于res_info_item表是一对多, 查询res_resource_catalog信息的同时,统计res_info_item中该条res_resourc ...
- [Beta阶段]第八次Scrum Meeting
Scrum Meeting博客目录 [Beta阶段]第八次Scrum Meeting 基本信息 名称 时间 地点 时长 第八次Scrum Meeting 19/05/14 大运村寝室6楼 25min ...
- [Gamma阶段]第四次Scrum Meeting
Scrum Meeting博客目录 [Gamma阶段]第四次Scrum Meeting 基本信息 名称 时间 地点 时长 第四次Scrum Meeting 19/05/30 大运村寝室6楼 35min ...