java设计模式之工厂模式实例详解
作者:索隆 发布时间:2023-11-24 23:35:12
标签:java,设计模式,工厂模式
本文实例讲述了java设计模式之工厂模式。分享给大家供大家参考,具体如下:
工厂模式(factory)
涉及到4个角色:抽象工厂类角色,具体工厂类角色,抽象产品类角色和具体产品类角色。
抽象工厂类角色使用接口或者父类来描述工厂的行为,
具体工厂类角色负责创建某一类型的产品对象。
抽象产品类可以使用接口或者父类来描述产品对象的行为特征。
具体产品类就是某一具体的对象。
工厂模式不同于静态工厂模式的地方:
工厂模式在工厂类也实现了多态,而不仅仅是在产品对象上实现多态。
它可以应对不同类型的产品对应一种具体的工厂。
其设计模式如下:
抽象工厂类 IFactory
package org.test.design.f;
/**
*
* @author lushuaiyin
*
*/
public interface IFactory {
IProduct createProduct();
}
具体工厂类 CarFactory ComputerFactory
package org.test.design.f;
public class CarFactory implements IFactory {
public IProduct createProduct() {
return new Car();
}
}
package org.test.design.f;
public class ComputerFactory implements IFactory {
public IProduct createProduct() {
return new Computer();
}
}
抽象产品类 IProduct
package org.test.design.f;
public interface IProduct {
void work();
}
具体产品类 Car Computer
package org.test.design.f;
public class Car implements IProduct{
public void work() {
System.out.println("I am car.");
}
}
package org.test.design.f;
public class Computer implements IProduct{
public void work() {
System.out.println("I am Computer.");
}
}
测试:
package org.test.design.f;
public class TestMain {
/**
* @param args
*/
public static void main(String[] args) {
IFactory carFactory=new CarFactory();
IProduct car=(IProduct)carFactory.createProduct();
car.work();
IFactory pcFactory=new ComputerFactory();
IProduct pc=(IProduct)pcFactory.createProduct();
pc.work();
}
}
/*打印
I am car.
I am Computer.
*/
更多java相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
来源:http://blog.csdn.net/lushuaiyin/article/details/8917363


猜你喜欢
- 前言MyBatis中也提供了注解式开发⽅式,采⽤注解可以减少Sql映射⽂件的配置。 当然,使⽤注解式开发的话,sql语句是写在java程序中
- 废话不多说了,直接给大家贴代码了,具体代码如下所示:<update id="updateAuditStateAndType&
- Android N 可以同时显示多个应用窗口。 在手机上,两个应用可以在“分屏”模式中左右并排或上下并排显示。例如,用户可以 在上面窗口聊Q
- 目录1. 前言2. 方法1 使用SurfaceView3. 方法2 给拍照下来的图片添加水印第一步:获取拍照权限第二步:拍照调用相机进行拍照
- 一、万能的字符串当然,任何时候都可以使用字符串作为属性的值,从配置文件里读取出来,如下:配置文件内容为:pkslow.admin=larry
- 1.spring-kafka<dependency> <groupId>org.springframe
- 1、阿里云DNS的SDK依赖<dependency> <groupId>com.aliyu
- 目录一、什么是vector数组二、vector的基本操作vector数组的初始化向vector中插入元素删除元素遍历数组利用vector创建
- 动态获取对象的性能值,这个在开发过程中经常会遇到,这里我们探讨一下何如高性能的获取属性值。为了对比测试,我们定义一个类Peoplepubli
- 一、findById(ID id)通过id进行单条查询,先看看 findById(ID id) 的源码@Overridepublic Opt
- 详解Android Webview加载网页时发送HTTP头信息当你点击一个超链接进行跳转时,WebView会自动将当前地址作为Referer
- 正式版:版本最新但只有14天的体验时间,之后需要激活,激活注册已经不行了,现在需要使用新的方式:首先下载反向代理工具,下载地址:根据系统选择
- Java程序设计 图形用户界面 【二】基本容器JFrameJFrame类的常用操作方法方法作用public JFrame() throws
- 本文实例讲述了spring AOP的After增强实现方法。分享给大家供大家参考,具体如下:一 配置<?xml version=&qu
- 数据库表结构departmentemployee要求一现在的要求是输入 id 把 employee 表的对应员工数据查询出来,并且查询出该员
- 这篇文章memo一下Jvm中关于时区设定的基础操作。Java的时区设定这里列出如下三种方式方式说明TimeZone.setDefault方式
- 1.继承Thread类,重写run方法2.实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Threa
- 1、如何添加listBox的值this.listBox1.Items.Add("张晓东");2、如何判断listBox集
- 目录No1. 自定义控件模板No2. 重写控件No3. 附加属性来试试总结文章默认你已经入门WPF了WPF日常开发,经常遇到默认的控件功能不
- 一、使用 System.Xml.Serialization类1、定义元数据引入System.Xml.Serialization命名空间。XM