【设计模式】之工厂模式
目录
之我所见
工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。
缺点:当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。
结构框图
代码实例
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!