DesignMode-Factory模式

博主分享学习设计模式中工厂模式的见解。介绍了简单工厂、工厂和抽象工厂三种模式,简单工厂通过传参生产不同实例,但不完全支持开闭原则;工厂模式引入工厂基类或接口,可建新房生产新产品;抽象工厂能让一个工厂生产多种产品,三种模式都体现开闭原则。

小弟最近在学习设计模式,把自己的一些浅显的见解写出来,希望各位朋友给予指教。

工厂模式:

工厂模式包括三种,第一简单工厂模式。第二种工厂模式。第三种抽象模式。工厂模式的主要特点就是通过工厂类生成不同的产品,(类的实例)。不过这些产品必须是相同的种类(继承了共通的基类,或者实现了相同的接口),也就是说一个工厂只能生产某种类的产品,这些产品必须遵循相同的接口,这样才能在同一个工厂生产出来。

1、简单工厂模式

简单工厂模式的类图是下面这样的:简单工厂模式类图

在这个工厂中,他可以生产三种产品,只要给工厂输送相应的材料就会生产出不同的产品。上面的类图可以通过下面的代码来实现。

 Factory {

   public static Product create(String which){

if(which.equals(“ProductA”)){

  return new ProductA();

}

if(which.equals(“ProductB”)){

  return new ProductB();

}

if(which.equals(“ProductC”)){

  return new ProductC();

}

   }

}

 

 

 

 

 

interface Product{

   public void product();

}

ProductA implements Product{

   Public void product();

}

ProductB implements Product{

   Public void product();

}

ProductC implements Product{

   Public void product();

}

这样,通过传给工厂方法不同的参数,就可以生产出不同的实例。简单工厂虽然支持开闭原则,但是并不能完全的支持开闭原则。在上述模式种如果要生产新的产品,就需要修改工厂方法,在里面添加相应的代码才能完成对新的产品的生产,但是这样违背了开闭原则。不能通过添加类来完成新增功能的实现。这样就需要引入工厂模式。

 

 

 

 

 

二、工厂模式

简单工厂模式中如果增加新的产品,只能通过修改工厂类的方式来完成。在工厂模式模式中,对于工厂也引入了基类或者接口,在一个接口下面可以有一族工厂,真正的工厂是继承自族中的某个工厂类来完成的,每个工厂可以有自己的产品,这样如果有新的产品出现,就可以建立新的工厂来生产新的产品。工厂和产品的类具有下面的关系。

工场模式类图

这样不同的工厂生产不同的产品,如果有新的产品出现就建立新的工厂,但是在这里面每个工厂都是对应一种抽象的产品,也就是说一个工厂只能生产同一种类的产品。要在一个工厂中生产不同的产品在工厂模式中就无法做到了,所以引入抽象工厂。

 

 

 

 

 

3、抽象工厂

在抽象共产模式中,每个抽象的工厂都可以对应多种产品的生产,这样就满足了一个工厂生产多种类型的产品。工厂和类的结构如下所示。

按照这样的模式建立类,就能够完成一个工厂生产多种产品的功能。

 

 

 

 

 

小结:

上面介绍了三种工场模式,工场模式的特点就是,通过工场模式来创建其他类的实例,通过这样的方式,能够很好的体现设计模式中的开闭原则。如果要增加新的机能比较方便,这要新增加产品就可以了,如果是需要新品种的产品,只需要再新增加工厂就可以了,特别是工场模式和抽象工厂模式更能够体现这样的原则。我个人觉得,工场模式更能够体现,对象的特性,使得类之间对象的关系更加明确。

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值