分享

工厂方法和抽象工厂

 天才白痴书馆 2015-04-16

csdn没有在移动上布网,最近移动校园网登不上csdn,今天终于能登上了,小草鸟就写下最近在学的设计模式。

工厂估计也差不多是用的最多的了,对于工厂方法和抽象工厂比较容易混,笔者在这里说下自己的学习的一些理解。

工厂模式:

产品

对于工厂,当然是生产产品的了,当然我们得有产品类,为了扩展性良好,先定义一个产品接口

 

1
2
3
4
5
6
public interface Animal {
     
    public void print();
     
     
}

有了产品接口,接下来当然是产品了

 

产品:猫

 

1
2
3
4
5
6
7
public class Cat implements Animal{
    public void print(){
        System.out.println("你是猫哦");
    }
     
}
产品:鸡

 

 

1
2
3
4
5
6
7
public class Chicken implements Animal{
     
    public void print(){
        System.out.println("你是鸡哦");
    }
     
}

产品:猪

 

 

1
2
3
4
5
6
7
public class Pig implements Animal{
    public void print() {
        System.out.println("你是猪哦");    
    }
     
}

 

工厂

哈哈,我们的产品都有了,下面我们不能把他们都放在哪里,当然得生产他们了

下面先定义一个工厂接口,这只是为了扩展性良好哦

 

1
2
3
4
5
public interface Produce{
     
    public Animal produceAnimal();
     
}
工厂接口都有了,我们当然得有具体的工厂生产这些厂品了

 

工厂:猫

 

1
2
3
4
5
6
7
8
9
10
public class Factory_Cat implements Produce{
     
    public Animal produceAnimal() {
         
        return new Cat();
         
    }
}

工厂:鸡

 

 

1
2
3
4
5
6
7
8
9
public class Factory_Chicken implements Produce {
    public Animal produceAnimal() {
         
        return new Chicken();
         
    }
}
工厂:猪

 

 

1
2
3
4
5
6
7
8
9
public class Factory_Pig implements Produce {
    public Animal produceAnimal() {
         
        return new Pig();
         
    }
}

哈哈,工厂有了,产品也有了,并且工厂也生产了需要的产品。接下来就是我们要的测试了

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Test {
    public void test(){
         
        Produce cat = new Factory_Cat();
        cat.produceAnimal().print();
         
        Produce chicken = new Factory_Chicken();
        chicken.produceAnimal().print();
         
        Produce pig = new Factory_Pig();
        pig.produceAnimal().print();
         
         
    }
     
    public static void main(String[] args) {
         
        Test test = new Test();
        test.test();
    }
}

写到这里,大家不免会发现一些问题,这里只能生产动物,但是我想生产猪肉,鸡肉,这样的该怎么呢?

 

bing go!一些人也许会说我可以在建一个肉接口生产肉啊,这样当然能解决问题,只是增加了另一个工厂方法,

但是要是有很多类似的种类需要生产呢?我们会有好多好多的工厂,我们也许会晕头转向吧,哈哈,解决的办法来了,

就是我们的抽象工厂来啦。先到这里,要断网了,明天补上

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多