小弟最近在学习设计模式,把自己的一些浅显的见解写出来,希望各位朋友给予指教。
工厂模式:
工厂模式包括三种,第一简单工厂模式。第二种工厂模式。第三种抽象模式。工厂模式的主要特点就是通过工厂类生成不同的产品,(类的实例)。不过这些产品必须是相同的种类(继承了共通的基类,或者实现了相同的接口),也就是说一个工厂只能生产某种类的产品,这些产品必须遵循相同的接口,这样才能在同一个工厂生产出来。
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、抽象工厂
在抽象共产模式中,每个抽象的工厂都可以对应多种产品的生产,这样就满足了一个工厂生产多种类型的产品。工厂和类的结构如下所示。
按照这样的模式建立类,就能够完成一个工厂生产多种产品的功能。
小结:
上面介绍了三种工场模式,工场模式的特点就是,通过工场模式来创建其他类的实例,通过这样的方式,能够很好的体现设计模式中的开闭原则。如果要增加新的机能比较方便,这要新增加产品就可以了,如果是需要新品种的产品,只需要再新增加工厂就可以了,特别是工场模式和抽象工厂模式更能够体现这样的原则。我个人觉得,工场模式更能够体现,对象的特性,使得类之间对象的关系更加明确。
博主分享学习设计模式中工厂模式的见解。介绍了简单工厂、工厂和抽象工厂三种模式,简单工厂通过传参生产不同实例,但不完全支持开闭原则;工厂模式引入工厂基类或接口,可建新房生产新产品;抽象工厂能让一个工厂生产多种产品,三种模式都体现开闭原则。
129

被折叠的 条评论
为什么被折叠?



