【设计模式】之工厂模式

 

目录

之我所见 

  工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。

  缺点:当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。

结构框图

代码实例

interface Mcdonald{
    void cooking();
}

class Hamburger implements Mcdonald{
    @Override
    public void cooking() {
        System.out.println("@-------MM吃汉堡-------@");
    }
}

class Cola implements Mcdonald{
    @Override
    public void cooking() {
        System.out.println("@-------MM喝可乐-------@");
    }
}

class Frenchfries implements Mcdonald{
    @Override
    public void cooking() {
        System.out.println("@-------MM吃薯条-------@");
    }
}

public class Factory {
    public Mcdonald getFood(String type){
        if(type==null){
            return null;
        }
        
        if(type.equals("Hamburger")){
            return new Hamburger();
        }
        else if(type.equals("Cola")){
            return new Cola();
        }
        else if(type.equals("Frenchfries")){
            return new Frenchfries();
        }
        return null;
    }
    
    
    public static void main(String[] args) {
        Factory factory = new Factory();
        
        System.out.println("@-------MM想吃汉堡-------@");
        Mcdonald m1 = factory.getFood("Hamburger");
        m1.cooking();
        
        
        System.out.println("@-------MM想喝可乐-------@");
        Mcdonald m2 =factory.getFood("Cola");
        m2.cooking();
        
        
        System.out.println("@-------MM想吃薯条-------@");
        Mcdonald m3 = factory.getFood("Frenchfries");
        m3.cooking();
        
    }
}

  结果

@-------MM想吃汉堡-------@
@-------MM吃汉堡-------@
@-------MM想喝可乐-------@
@-------MM喝可乐-------@
@-------MM想吃薯条-------@
@-------MM吃薯条-------@

总结

追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory。

Don't stop!Never give up!
原文地址:https://www.cnblogs.com/anny0404/p/5085261.html