工厂模式主要是 为了建立对象而提供的接口。java
1. 以下是一个简单的工厂类app
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
- public class Factory{
-
- public static Sample creator(int which){
-
- //getClass 产生Sample 通常可以使用动态类装载装入类。
- if (which==1)
- return new SampleA();
- else if (which==2)
- return new SampleB();
-
- }
-
- }
在程序中,若是要实例化Sample时.就使用 Sample sampleA=Factory.creator(1) 就可。spa
2.以下是更高一点的 抽象工厂模式。 若是建立对象的方法变得复杂了,如上面的是建立一个Sample对象,.net
这边要是还要在建立一个新的对象,就能够用这种模式了!对象
这里假设:Sample有两个concrete类SampleA和SamleB,而Sample2也有两个concrete类Sample2A和SampleB2blog
那么,咱们就将上例中Factory变成抽象类,将共同部分封装在抽象类中,不一样部分使用子类实现。接口
eg:ip
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
- public abstract class Factory{
-
- public abstract Sample creator();
-
- public abstract Sample2 creator(String name);
-
- }
-
- public class SimpleFactory extends Factory{
-
- public Sample creator(){
- .........
- return new SampleA
- }
-
- public Sample2 creator(String name){
- .........
- return new Sample2A
- }
-
- }
-
- public class BombFactory extends Factory{
-
- public Sample creator(){
- ......
- return new SampleB
- }
-
- public Sample2 creator(String name){
- ......
- return new Sample2B
- }
-
- }