浅谈 java 设计模式--简单工厂模式(Simple Factory pattern)
来源:互联网 发布:qq三国js带什么宠物 编辑:程序博客网 时间:2024/05/22 13:35
问题:
简单工厂模式又称静态工厂方法,是类的创建模式。
为了提高内聚(Cohesion)和松散耦合(Coupling),我们会经常抽象出一些类的公共接口以形成抽象基类和接口。简单工厂模式提供创建对象的接口,封装了对象的创建,由工厂类根据传入的参数决定创建哪一种产品类。
类图:
源代码实现:
/** 工厂类*/
public class Factory{
// 静态工厂方法
public static Product createProduct(String productName)
throws BadProductException{
if (productName.equalsIgnoreCase("ConcreteProduct1")){
returnnewConcreteProduct1();
}else if (productName.equalsIgnoreCase("ConcreteProduct2")){
returnnewConcreteProduct2();
}else{
thrownewBadProductException("/"" + productName +"/" is not a valid name of product!");
}
}
}
/** 产品接口*/
publicinterfaceProduct{
void Operation1();
void Operation2();
}
/**具体产品类ConcreteProduct1*/
publicclassConcreteProduct1implementsProduct{
privateString attributeA;
publicString Operation1(){
return"Operation1";
}
publicString Operation2(){
return"Operation2";
}
publicString getAttributeA(){
returnthis.attributeA;
}
publicvoid setAttributeA(String attributeA){
this.attributeA = attributeA;
}
}
/** 具体产品类ConcreteProduct2*/
publicclassConcreteProduct2implementsProduct{
privateString attributeB;
publicString Operation1() {
return"Operation1";
}
publicString Operation2(){
return"Operation2";
}
publicString getAttributeB() {
returnthis.attributeB;
}
publicvoid setAttributeB(String attributeB){
this.attributeB = attributeB;
}
}
/**客户端代码*/
public class Client{
public static void main(String[] args){
try{
Factory theFactory =newFactory();
Product aConcreteProduct1 = theFactory.createProduct("ConcreteProduct1");
lblMessagea.set_Text(ConcreteProduct1.Operation1());
Product aConcreteProduct2 = theFactory.createProduct("ConcreteProduct2");
// 运行下一句时产生异常
Product aConcreteProduct3 = theFactory.createProduct("ConcreteProduct3");
} catch(BadProductException ex){
lblMessage.set_Text(ex.get_Message());
}
}
}
缺点:
1) 增加新的具体产品类, 会导致工厂类的修改。功能扩展比较困难。
2)由于使用静态方法作为工厂方法,而静态方法无法由子类继承,因此,工厂角色无法形成基于继承的等级结构。
- 【JAVA设计模式】简单工厂模式(Simple Factory Pattern)
- Java设计模式:简单工厂模式(Simple Factory Pattern)
- 浅谈 java 设计模式--简单工厂模式(Simple Factory pattern)
- JAVA设计模式之 简单工厂模式【Simple Factory Pattern】
- Java设计模式--简单工厂模式【Simple Factory Pattern】
- 设计模式之简单工厂模式(Simple Factory Pattern)
- 设计模式1:Simple Factory Pattern(简单工厂模式)
- 设计模式(1):简单工厂模式(Simple Factory Pattern)
- 简单工厂模式(simple Factory Pattern)
- 简单工厂模式(simple factory pattern)
- 简单工厂模式(Simple Factory Pattern)
- 简单工厂模式(Simple Factory Pattern)
- 简单工厂模式(simple factory pattern)
- 简单工厂模式(Simple Factory Pattern)
- Simple Factory Pattern 简单工厂模式——《深入浅出设计模式(C#/Java版)》
- c++设计模式:简单工厂模式(Simple Factory Pattern)
- C#设计模式之简单工厂模式(Simple Factory Pattern)
- Java设计模式 - 简单工厂模式(Simple Factory)
- 设计模式笔记——Decorator
- 15款很棒的 JavaScript 开发工具(转载)
- 头文件delay.h, delay_basic.h
- QT中foreach的简单使用
- 通过AppFuse在eclipse下创建ssh工程编译报错
- 浅谈 java 设计模式--简单工厂模式(Simple Factory pattern)
- 批量拿joomla的webshell
- mysql时间类型的sql操作
- 类的序列化与反序列化serialVersionUID(转) .
- 转载tomcat配置jvm内存
- 图片格式 jpg到ppm c++代码
- Qt配置vs2005的方法
- ASP.net解析JSON例子
- POJ 2488 A Knight's Journey