zoukankan      html  css  js  c++  java
  • FACTORY设计模式【让吃货也能理解的程序】

    一个人要有思想,技术再牛的人,如果没有一点点文化气氛,那么也是个码农,不能追到女朋友滴。

    我这个人文化真心不多,但是比较喜欢读古诗文。虽然读完之后,记在脑海里的不多,不过,就讨一个喜欢【读】。

    Leechee:荔枝,南国四大果品居首。

    1、简单模式

    package patterns.createable.factory;
    /**
     * "日啖荔枝三百颗,不辞长作岭南人"---摘自 宋朝苏轼·《惠州一绝》
     * 古人对荔枝的赞美,频频出现在诗句中
     * 的确,这南国的荔枝,的确值得品尝
     * 在南国有四大果品中,荔枝居首
     * 
     * @author one
     *
     */
    public class Leechee {
    
    	void eat(){
    		System.out.println("Eat Leechee");
    	}
    
    }
    


     

    package patterns.createable.factory;
    
    /**
     * 好东西,要学会分享,不要掖着。
     * 所以开了个荔枝加工厂,让四海之内的兄弟姐妹都尝尝
     * 
     * @author one
     * 
     */
    public class LeecheeFactory {
    
    	Leechee get() {
    		return new Leechee();
    	}
    
    }
    
    package patterns.createable.factory;
    
    /**
     * 都听说荔枝好吃
     * 社区的人都来买来尝尝。
     * @author one
     *
     */
    public class Test {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		//工厂将荔枝打包,发往全国各地
    		LeecheeFactory lf=new LeecheeFactory();
    		
    		//荔枝到达了中国皖南地区,那里的人也喜欢,就买了一点
    		Leechee leechee=lf.get();
    		
    		//尝尝,的确不错
    		leechee.eat();
    	}
    
    }
    

    得到的结果:

    Eat Leechee
    


    2、工厂方法模式

    package patterns.createable.factory;
    
    /**
     * "大师兄,不好了,师傅被妖怪抓走了"
     * "出什么状况了?"
     * "我们的荔枝把妖怪培养成吃货,它们夹持了我们的师傅,要新口味的水果。"
     * "这...我来想办法。"思考良久,"老子的香蕉,难道也要分享给这群吃货。"
     * "恐怕那些吃货不肯吃啊!"
     * "呃...我们只要简单的包装一下。"
     * @author one
     *
     */
    public abstract class Fruit {
    
    	abstract void eat();
    }
    
    package patterns.createable.factory;
    
    /**
     * 新鲜口味的水果
     * @author one
     *
     */
    
    public class Banana extends Fruit {
    
    	@Override
    	void eat() {
    		System.out.println("Eat Banana");
    	}
    
     
    
    }
    
    package patterns.createable.factory;
    
    /**
     * 这个工厂就是生产香蕉的
     * @author one
     *
     */
    public class BananaFactory {
    
    	Banana get(){
    		return new Banana();
    	}
    
    }
    

    好了....师傅放回来了,可是每两周又被妖怪威胁要新的口味,导致我的工厂越来越多,没法管理了,怎么办?

    统一一下:

    package patterns.createable.factory;
    
    /**
     * 成立总部,专做水果生意
     * @author one
     *
     */
    public abstract class FruitFactory {
    
     	 abstract Fruit get();
    
    }
    


    公司改造,上市!

    这样让所有的公司统一管理。至于是什么业务,生产什么水果,从总公司拿到订单,吩咐子公司去做就行了。


    3、抽象工厂模式

    【这个不说,可以理解为:水果加工产业,不属于水果生产,这个时候,就更高一层的把公司“工厂”抽象】

    ========================

    在网上看到很多文章,看到很多人经常把简单工厂模式和工厂方法模式弄混淆,这里再说一下:工厂是具体实例,那么就是产品【荔枝】了,而工厂方法模式是一类产品的抽象【荔枝和香蕉都属于水果】。至于抽象工厂,就是不同产品类了,完全没有产品共性了,但属于莫一个公司【水果和水果加工产业都属于一个公司】,或者一个单位。更高一层的抽象。


     

  • 相关阅读:
    C++ 类的本质 札记
    eclipse makefile
    boost 简介
    telecom 产品分析js
    javascript 得到页面参数
    ajax 接口统一模式
    备份
    jquery 元素插入详解
    使用WebClient制作一下简单的采集器
    数据库锁机制
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3297294.html
Copyright © 2011-2022 走看看