赞
踩
奶茶现在这么受大众的欢迎,那这么好赚钱的门路肯定不能错过。
那如果想开一家奶茶店需要什么步骤呢,经过一番观察,前期可能需要购买设备、原料、店铺、人工等等。
那我们可以用代码来实现我们的第一家奶茶店
public interface IBubbleShop {
// 店铺
void shop();
// 原料
void ingredient();
// 员工
void staff();
// 设备
void facility();
// 正常营业
void normalBusiness();
}
public class BubbleShop implements IBubbleShop { // 奶茶店名称 private String name; public BubbleShop(String name){ this.name = name; } @Override public void shop() { System.out.println("租店铺!"); } @Override public void ingredient() { System.out.println("购买原材料!"); } @Override public void staff() { System.out.println("雇员工!"); } @Override public void facility() { System.out.println("购买设备!"); } @Override public void normalBusiness() { System.out.println("二杠杆奶茶点开始营业了"); System.out.println("卖出一杯奶茶!"); } }
public class BubbleShopMain { public static void main(String[] args) { // 定义一个名叫二杠杆的奶茶店 IBubbleShop bubbleShop = new BubbleShop("二杠杠"); // 前期准备 bubbleShop.shop(); bubbleShop.facility(); bubbleShop.ingredient(); bubbleShop.staff(); // 开始营业 bubbleShop.normalBusiness(); } } /** * 运行结果: * * 租店铺! * 购买设备! * 购买原材料! * 雇员工! * 二杠杆奶茶点开始营业了 * 卖出一杯奶茶! */
通过以上步骤,我们的“二杠杠“奶茶店终于开业了!
经过了一年的努力,我们的奶茶店火了。那我们肯定不满足一家店的带来的收益,我们要做大,那就开启品牌加盟模式。
由于“二杠杠”奶茶店的名气,很多商家想加盟我们的品牌。那前期为了推广,那就不设置加盟条件了,直接让大家使用名气,毕竟韭菜得先养才好割。
public class BubbleShopProxy implements IBubbleShop { private IBubbleShop iBubbleShop; public BubbleShopProxy(IBubbleShop iBubbleShop){ this.iBubbleShop = iBubbleShop; } @Override public void shop() { this.iBubbleShop.shop(); } @Override public void ingredient() { this.iBubbleShop.ingredient(); } @Override public void staff() { this.iBubbleShop.staff(); } @Override public void facility() { this.iBubbleShop.facility(); } @Override public void normalBusiness() { System.out.println("加盟店准备就绪"); this.iBubbleShop.normalBusiness(); } }
public class BubbleShopMain { public static void main(String[] args) { IBubbleShop erganggang = new BubbleShop("二杠杠"); IBubbleShop proxy = new BubbleShopProxy(erganggang); // 加盟店的前期准备 proxy.shop(); proxy.facility(); proxy.ingredient(); proxy.staff(); // 加盟店开始营业 proxy.normalBusiness(); } } /** * 运行结果: * * 租店铺! * 购买设备! * 购买原材料! * 雇员工! * 加盟店准备就绪 * 二杠杆奶茶点开始营业了 * 卖出一杯奶茶! */
以上代码我们实现了商家的加盟。
又经过了一年,“二杠杠”奶茶店更火了。加盟的商家更多了。那我们开始提出我们的加盟条件了,需要缴纳10w的加盟费,每个商家卖出一杯奶茶我们抽成2块钱(是不是很资本家)。
public interface ProxyCondition {
// 加盟费
void initalFee();
// 抽成
void cut();
}
public class BubbleShopProxy implements IBubbleShop, ProxyCondition { private IBubbleShop iBubbleShop; public BubbleShopProxy(IBubbleShop iBubbleShop){ this.iBubbleShop = iBubbleShop; } @Override public void shop() { this.initalFee(); this.iBubbleShop.shop(); } @Override public void ingredient() { this.iBubbleShop.ingredient(); } @Override public void staff() { this.iBubbleShop.staff(); } @Override public void facility() { this.iBubbleShop.facility(); } @Override public void normalBusiness() { System.out.println("加盟店准备就绪"); this.iBubbleShop.normalBusiness(); this.cut(); } @Override public void initalFee() { System.out.println("缴纳10w加盟费"); } @Override public void cut() { System.out.println("一杯奶茶抽成2块钱"); } } /** * Main方法不需要更改。 * 运行结果: * * 缴纳10w加盟费 * 租店铺! * 购买设备! * 购买原材料! * 雇员工! * 加盟店准备就绪 * 二杠杆奶茶点开始营业了 * 卖出一杯奶茶! * 一杯奶茶抽成2块钱 */
新的加盟条件发布后。我们的收益又提升了。
由于“二杠杠”奶茶店太火了,加盟的人很多。所以我们需要开一家公司,公司专门处理加盟的事务。
再此我们先引人一个概念,动态代理。动态代理指的是通过代理的接口来动态生成代理类。
目前JDK实现动态代理的方式有两种。基于JDK的动态代理及基于CGILB的动态代理。
以下拿JDK的动态代理为例。实现JDK动态代理主要包括两步
- 创建一个类实现InvocationHandler接口,且必须实现invoke方法。
- 通过Proxy.newProxyInstance初始化一个代理,最后通过代理调用具体方法。
开设一个公司就好比实现动态代理。接下来回到我们的奶茶店上。
public class BubbleShopIH implements InvocationHandler { // 被代理的实例 Object obj; public BubbleShopIH(Object obj) { this.obj = obj; } // 调用被代理的方法 @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if (method.getName().equals("shop")) { System.out.println("缴纳10w加盟费"); } if (method.getName().equals("normalBusiness")) { System.out.println("加盟店准备就绪"); } Object result = method.invoke(this.obj, args); if (method.getName().equals("normalBusiness")) { System.out.println("一杯奶茶抽成2块钱"); } return result; } }
public class BubbleShopIHMain { public static void main(String[] args) { IBubbleShop bubbleShop = new BubbleShop("二杠杠"); InvocationHandler handler = new BubbleShopIH(bubbleShop); // 动态产生一个代理者 IBubbleShop proxy = (IBubbleShop) Proxy.newProxyInstance(bubbleShop.getClass().getClassLoader(), new Class[]{IBubbleShop.class}, handler); proxy.shop(); proxy.facility(); proxy.ingredient(); proxy.staff(); proxy.normalBusiness(); } } /** * 运行结果: * * 缴纳10w加盟费 * 租店铺! * 购买设备! * 购买原材料! * 雇员工! * 加盟店准备就绪 * 二杠杠奶茶点开始营业了 * 卖出一杯奶茶! * 一杯奶茶抽成2块钱 */
到此我们创建了自己的公司,有了专门的流程(代理类的invoke方法),我们的奶茶王朝已经建立玩完成。
1.代理包含两种方式:静态代理和动态代理(开设公司前为静态代理)
2.代理模式是应用非常广泛的模式。Spring AOP的实现原理便是代理模式。
希望通过奶茶店的方式可以给你一个理解的思路。如果你觉得文章不错,可以点个赞。你的支持是我前进的动力。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。