- 浏览: 1230790 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (718)
- HTML (13)
- JS基础 (23)
- JS应用 (40)
- AJAX (6)
- JSP相关 (12)
- JAVA基础 (52)
- JAVA应用 (74)
- APPLET (11)
- SWING\RCP (2)
- JAVA反射 (6)
- 设计模式 (26)
- 数据库设计 (20)
- Struts (35)
- Struts2 (12)
- Spring (22)
- Hibernate (45)
- Ibatis (18)
- mybatis (3)
- SSH (8)
- UML (5)
- WebService (3)
- XML (16)
- Log4j (7)
- WEB容器 (26)
- 数据结构 (36)
- Linux (34)
- Ruby on Rails (1)
- 其它技术 (27)
- IDE配置 (15)
- 项目实战 (2)
- Oracle (69)
- JAVA报表 (7)
- Android学习 (2)
- 博客链接 (1)
- 网络基础 (1)
- WEB集群 (1)
- .Net开发 (11)
- PB (4)
- 系统构建 (15)
最新评论
-
jnjeC:
牛逼啊哥们,讲得太好了
Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包 -
九尾狐的yi巴:
很好 感谢!
Itext中文处理(更新版) -
luweifeng1983:
有用的,重启一下嘛。
设置eclipse外部修改文件后自动刷新 -
Master-Gao:
设置了也不管用,怎么破呢?
设置eclipse外部修改文件后自动刷新 -
aigo_h:
锋子还有时间写博客,还是很闲哈!
Add directory entries问题
JAVA设计模式学习之----创建模式:工厂模式(工厂方法) 工厂模式分为工厂方法和抽象工厂。。 工厂模式用于生成对象。。。 一般我们生成对象使用new 如Person p = new Person();来实现,但我们在创建这个对象的时候可能要做一些其它的事情。。 当然java中通过重载构造函数可以实现如Person p = new Person(String name);,但通过增加参数的方法还是不能满足我们的需求,如是如果我要新建对象的时候要进行数据库的相关操作,那么采用重载构造函数的方法肯定会使构造函数中的代码相当长,不仅仅是因为不好看,主要是因为它违背了面向对象的设计原则:高内聚低耦合性。 好了,以Person类为例:现在有两个类继承Person,分别为Zhangshan,Zhangsi,那么我们采用工厂模式来产生对象,根据面向接口编程的原则我们将Person抽象成一个接口,那么有的人会说Zhangshan,Zhangsi实现Person接口然后实例化的时候用 Person p1 = new Zhangshan(); Person p2 = new Zhangsi(); 不就要以了吗?为什么要工厂模式呢。 我们没有想到,有一天我们会有更多的类继承Person类,那么是不是我们都要使用Person pn = new ....的形式来产生实例呢? 显然不是明智之举。。。现在我们看工厂模式的代码: 首先Person接口: package com.foactory.eus.interfaces; public interface Person{ public static final String className= "Person" ; String getName(); int getAge(); } 接口的实现类:Zhangshan package com.foactory.eus.implement; import com.foactory.eus.interfaces.Person; public class Zhangshan implements Person{ public StringgetName(){ System. out .println( "thisiszhangshanisname" ); return "" ; } public int getAge(){ return 0; } } 接口的实现类:Zhangsi package com.foactory.eus.implement; import com.foactory.eus.interfaces.Person; public class Zhangsi implements Person{ public int getAge(){ return 0; } public String getName(){ System. out .println( "thisiszhangsiisname" ); return null ; } } 再看看工厂类及方法:PersonFactory package com.foactory.eus.factory; import com.foactory.eus.implement.Zhangshan; import com.foactory.eus.implement.Zhangsi; import com.foactory.eus.interfaces.Person; public class PersonFactory{ public static Person instance( int which){ if (which==1){ return new Zhangshan(); } else { return new Zhangsi(); } } public static void main(String[]args){ Person p1=PersonFactory.instance(1); p1.getName(); Person p2=PersonFactory.instance(2); p2.getName(); } } 上面的main方法用来测试的,打印输出: this is zhangshan is name this is zhangsi is name 你可以看到这时候如果我们有新的Person的实现类的话,我们只需在PersonFactory 类中加入一段代码就可以了。 如增加 Zhangwu的实例如下: if (which==2){ return new Zhangwu(); } 好了,上面讲的就是打工厂模式中的工厂方法了。如果系统不是很复杂,用这个就可以了。。。
以上的实现我们可称之为简单工厂
下面的代码是针对本文最上面的类图所设计的代码,我们称为工厂方法
以下是工厂类为抽象类,由其子类创建对象实例的例子。
package com.lwf.factorymethod; public interface Product { void getName(); void getNum(); }
package com.lwf.factorymethod; public class ConcreateProductA implements Product { public void getName() { System.out.println("con productA"); } public void getNum() { System.out.println("con productA"); } }
package com.lwf.factorymethod; public class ConcreateProductB implements Product { public void getName() { System.out.println("con productB"); } public void getNum() { System.out.println("con productB"); } }
package com.lwf.factorymethod; public abstract class Factory { public abstract Product createProduct(); }
package com.lwf.factorymethod; public class ProductFactoryA extends Factory { public Product createProduct() { return new ConcreateProductA(); } }
package com.lwf.factorymethod; public class ProductFactoryB extends Factory { public Product createProduct() { return new ConcreateProductB(); } }
package com.lwf.factorymethod; public class TestFactoryMethod { public static void main(String[] args) { Factory factory = new ProductFactoryA(); Product product = factory.createProduct(); product.getName(); product.getNum(); factory = new ProductFactoryB(); product = factory.createProduct(); product.getName(); product.getNum(); } }
输出结果为:
con productA
con productA
con productB
con productB
附件为相应代码
- FactoryMethod.rar (2.6 KB)
- 下载次数: 2
发表评论
-
深入浅出设计模式十四——复合模式
2016-07-05 09:35 5713 -
深入浅出设计模式十一——组合模式
2016-07-05 09:31 4773 -
深入浅出设计模式十二-状态模式(行为型)
2010-07-20 16:27 1632定义: 状态模式: 允许对象在内部状态改变时改变它的行为 ... -
深入浅出设计模式十——迭代模式
2010-07-19 14:24 935我 -
代理模式\装饰模式\适配器模式区别
2010-07-16 17:16 2420代理模式\装饰模式\适配器模式它们有相似性,那么具体在什么情况 ... -
深入浅出设计模式十三——代理模式(结构型)
2010-07-16 11:29 874以下两篇文章分别讲了静态代理与动态代理 http://qu ... -
深入浅出设计模式九——模板方法模式(行为型)
2010-07-14 16:12 1031模板方法模式: 定义一个操作中的算法的骨架,而将一些步骤延迟 ... -
GRASP原则简介
2010-03-10 17:38 2410GRASP(General Responsibilit ... -
深入浅出设计模式六——封装调用(命令模式)
2010-03-08 15:35 1126命令模式: 将一个请求封装为一个对象,从而使你可用不同的请 ... -
深入浅出设计模式五——独一无二(单例模式)
2010-03-08 15:34 1097先看文章 :http://quicker.iteye.com/ ... -
深入浅出设计模式四——多区域比萨加盟店生产比萨实现(抽象工厂模式)
2010-03-05 16:17 1297有关抽象工厂文章可先看:http://quicker.itey ... -
深入浅出设计模式四——比萨店生产比萨实现(工厂方法模式)
2010-03-04 17:11 2403在http://quicker.iteye.com/blog/ ... -
深入浅出设计模式三——Beverage实现(装饰者模式)
2010-03-03 17:31 1325上图的实现代码见 ... -
深入浅出设计模式二——WeatherData设计(观察者模式)实现二
2010-03-02 17:24 1218在上文:深入浅出设计模式二——WeatherData设计(观察 ... -
深入浅出设计模式二——WeatherData设计(观察者模式)实现一
2010-03-01 14:31 1623UML详细图 良好的OO ... -
深入浅出设计模式一——Duck设计(策略模式)
2010-02-26 18:04 2156以下为针对上图所列代码: package com. ... -
深入浅出设计模式七——Adapter模式(结构型)
2010-02-22 15:45 1136将两个不兼容的类或者说没有关系的类纠合在一起使用。就要在使用 ... -
深入浅出设计模式八——Facade模式(结构型)
2010-02-22 15:06 1853外观模式定义: 外观模式:提供一个统一的接口,用来访问子系统 ... -
创建型——Builder模式
2010-02-04 16:04 990UML: 如何使用: ... -
创建型(单例模式)
2010-01-26 11:39 1012package com.lwf.create.singleto ...
相关推荐
工厂模式是一种常用的创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当我们创建对象时,不会直接实例化对象,而是通过调用一个工厂方法来创建。这样做的好处是,我们可以在不修改已有代码的情况下...
工厂方法模式是面向对象设计模式中的一种,它属于创建型模式,主要解决的是当系统需要创建的对象具有多种类型,而具体创建哪种类型的对象在运行时才能确定的问题。在这个压缩包中,`FactoryMethod`可能包含了Java...
简单工厂模式是创建型设计模式的一种,它提供了一种创建对象的最佳方式。在简单工厂模式中,一个专门的类(称为工厂类)负责创建对象,客户端无需知道所创建的对象的具体类,只需要知道所需对象的类型即可。这种模式...
在软件设计模式中,工厂模式是一种非常常见的创建型模式,它提供了一种创建对象的最佳方式。C#中的工厂模式分为简单工厂、抽象工厂和单例模式三种,每一种都有其特定的应用场景和优势。 1. **简单工厂模式**: ...
抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象集合的接口,而无需指定具体类。这种模式的主要目的是为了隔离产品对象的创建和使用,使得系统对产品类的依赖降低到最低,同时也方便了产品的扩展和...
简单工厂模式,也称为静态工厂模式,是一种创建型设计模式,它提供了一个静态方法来创建对象,而无需暴露实例化逻辑。在简单工厂模式中,一个单一的工厂类负责生产所有相关类型的实例。这种模式适用于产品种类较少且...
简单工厂模式是一种常用的设计模式,属于创建型模式之一。该模式的主要目的是为了封装产品对象的创建过程,将这一过程从客户端分离出来,使客户端无须关心具体的产品类如何被实例化。在C#中应用简单工厂模式,可以...
工厂方法模式是创建型设计模式中的一种,它的目的是定义一个创建对象的接口,但让子类来决定实例化哪一个类。工厂方法模式将对象的实例化推迟到子类中进行,这样做可以使得创建过程更加灵活,符合“开闭原则”——对...
抽象工厂模式是一种设计模式,属于创建型模式,它提供了一种创建对象集合的方式,这些对象来自相关联的产品家族,而且每个对象都属于不同的抽象产品类。在“格斗类游戏软件”的场景中,这个模式可以帮助我们根据玩家...
抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象集合的接口,而无需指定具体的类。这种模式允许客户端使用一个通用接口来创建一组相关或相互依赖的对象,而无需关心它们的具体实现。在Java或其他...
简单工厂模式是软件设计模式中的一种基础模式,它属于创建型模式,主要解决对象的创建问题,降低了客户端代码与具体产品类之间的耦合度。在本实验中,我们将深入理解和应用C#语言实现简单工厂模式。 简单工厂模式的...
**实验内容:** 在本次实验中,我们深入学习了三种创建型设计模式:简单工厂模式、工厂方法模式和抽象工厂模式,并通过具体案例进行了实践。 **任务分析:** 通过实验,我们了解了每种模式的应用场景和设计原则。例如...
在软件设计模式中,工厂方法(Factory Method)和抽象工厂(Abstract Factory)是两种非常重要的创建型模式。它们主要用于解决对象实例化的问题,提供了一种封装对象创建过程的方法,使得代码更加灵活,易于扩展和...
本文将详细介绍两种常见的工厂模式——简单工厂模式和工厂方法模式,并通过具体的C#代码示例进行讲解。 #### 二、简单工厂模式 ##### 2.1 概念 简单工厂模式(Simple Factory Pattern)是一种常用的设计模式,它...
抽象工厂模式是一种重要的软件设计模式,它属于创建型模式,主要解决的是当系统需要创建一系列相关或相互依赖的对象时,而这些对象的类在运行时可能不确定的问题。在这个模式中,我们通过一个抽象工厂接口来定义创建...
其中,工厂模式是一种常用的创建型模式,用于封装对象的创建过程,提供一种方式使系统能够独立于创建、组合和表示对象的具体类而运行。本文将深入探讨三种不同类型的工厂模式——简单工厂、工厂方法和抽象工厂——在...
工厂模式是一种设计模式,它是创建型模式的一种,主要用于在代码中抽象出对象的创建过程,使得创建对象的过程与具体的实现分离,从而提高了代码的可扩展性和可维护性。在这个"工厂模式(2016手机案例)"中,我们将...
简单工厂模式是一种设计模式,属于创建型模式,它提供了一种创建对象的最佳方式。在简单工厂模式中,一个专门的类(称为工厂类)负责创建其他类的实例,客户端通过工厂类来创建需要的对象,而不需要知道具体创建过程...
简单工厂模式是一种创建型设计模式,它提供了一个创建对象的静态接口,而无需指定具体的类。在"潜艇大战"游戏中,可能有多种不同的潜艇或武器需要被创建。简单工厂模式可以帮助我们创建这些对象,而不必在代码中硬...