1.描写叙述

今天我要说说我自己,梦想中的我自己,我身价过亿,有两个大公司,一个是房地产公司,一个是服装制造业,这两个公司都非常赚钱,天天帮我在累加財富,事实上是什么公司我倒是不关心,我关心的是是不是在赚钱,赚 了多少,这才是我关心的,我是商人呀,唯利是图是我的本性,偷税漏税是我的方法,欺上瞒下、压榨员工血汗 我是的手段嘛,呵呵。同一时候我公司也 会发展,最终在有一天我认为赚钱速度太慢,于是我上下疏通,左右打关系,最终开辟了一条赚钱的康庄大道:生产山寨产品,什么产品呢?就是市场上什么牌子的东西火爆我生产什么牌子的东西,甭管是打火机还是电脑,仅仅要它火爆,我就生产,赚过了高峰期就换个产品,打一枪换一个牌子,不承担售后成本、也不操心销路问题,
我仅仅有正品的十分之中的一个的价格,你买不买?哈哈,赚钱呀! 
      那么,我的服装厂就開始变成山寨 iPod 生产车间,然后就看我的財富在积累积累,你想呀山寨的东西不须要特别的销售渠道(正品到哪里我就到哪里),不须要维修成本(大不了给你换个,你还想咋地,过了高峰期我就改头换面了你找谁维修去,投诉?投诉谁呢?),不承担广告成本(正品在打广告,我还须要吗?须要吗?),可是我也有犯愁的时候,我这是个山寨工厂,要及时的生产出市场上流行产品,转型要快,要灵活,今天从生产 iPod 转为生产 MP4,明天再转为生产上网本,这个都须要灵活的变化,不要限制的太死,那问题来了,每次我的厂房,我的工人,我的设备都在,不可能每次我换个山寨产品我的厂子就彻底不要了,这不行,成本忒高了点,那怎么办?请看类图:

CNewCorp 类和 IProduct 类建立一个关联关系,能够彻底解决我以后山寨公司生产产品的问题了。

凝视:
      main(),客户
      IProduct。产品接口
      CHouse。房子
      CIPod。ipod
      CClothes,服装
      CNewCorp,桥梁类,MakeMoney()是桥梁方法
      CNewHouseCorp,仅仅能生产房子,所以构造函数是CHouse*
      CShanZhaiCorp,什么赚钱就生产什么,所以构造函数是IProduct*
      说明:客户直接使用CNewHouseCorp和CShanZhaiCorp类。在main()函数里构造产品。然后传到这两个类里。这两个类的MakeMoney()函数,先调用基类的MakeMoney()。然后分别执行各自的逻辑。
注意:CNewCorp起到了桥梁的作用。能够分别添加产品和公司。

2.代码

require "class"

-----------IProduct------------
IProduct = class() function IProduct:BeProducted() end function IProduct:BeSelled() end
-- 注:事实上不须要继承IProduct
-----------House------------
House = class(IProduct) function House:BeProducted()
print("生产出的房子是这个样子的...")
end function House:BeSelled()
print("生产出的房子卖出去了...")
end -----------Clothes------------
Clothes = class(IProduct) function Clothes:BeProducted()
print("生产出的衣服是这个样子的...")
end function Clothes:BeSelled()
print("生产出的衣服卖出去了...")
end -----------IPod------------
IPod = class(IProduct) function IPod:BeProducted()
print("生产出的ipod是这个样子的...")
end function IPod:BeSelled()
print("生产出的ipod卖出去了...")
end -- 桥梁--
-------------NewCorp--------------
NewCorp = class() function NewCorp:ctor(pproduct)
self.m_pProduct = pproduct
end function NewCorp:IMakeMoney()
-- 每一个公司都是一样,先生产
self.m_pProduct:BeProducted() -- 然后销售
self.m_pProduct:BeSelled()
end -------------NewHouseCorp--------------
NewHouseCorp = class(NewCorp) function NewHouseCorp:MakeMoney()
self:IMakeMoney() print("房地产公司赚大钱了...")
end -------------ShanZhaiCorp--------------
ShanZhaiCorp = class(NewCorp) function ShanZhaiCorp:MakeMoney()
self:IMakeMoney()
print("房地产公司赚大钱了...")
end -------------DoNewRun Test--------------
function DoNewRun1()
print("----------房地产公司是这样执行的----------")
local house = House.new()
local newHouseCorp = NewHouseCorp.new(house)
newHouseCorp:MakeMoney() print("----------山寨公司是这样执行的----------")
local clothes = Clothes.new()
local shanZhaiCorp = ShanZhaiCorp.new(clothes)
shanZhaiCorp:MakeMoney()
end function DoNewRun2()
print("----------房地产公司是这样执行的----------")
local house = House.new()
local newHouseCorp = NewHouseCorp.new(house)
newHouseCorp:MakeMoney() print("----------山寨公司是这样执行的----------")
local ipod = IPod.new()
local shanZhaiCorp = ShanZhaiCorp.new(ipod)
shanZhaiCorp:MakeMoney() end --- main ---
function main()
DoNewRun1()
print("*********************************")
DoNewRun2()
end main()

执行结果,例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

设计模式实例(Lua)笔记之五(Bridge模式)的更多相关文章

  1. 《图解设计模式》读书笔记4-1 Bridge模式

    目录 概念 代码 角色 类图 想法 概念 Bridge模式即桥接模式.顾名思义,这个模式的作用是将类的功能层次结构和类的实现层次结构连接起来. 功能层次结构 Something -SomethingG ...

  2. 设计模式实例(Lua)笔记之四(Builder 模式)

    1.描写叙述:      又是一个周三,快要下班了,老大突然又拉住我,喜滋滋的告诉我"牛叉公司非常惬意我们做的模型,又签订了一个合同,把奔驰.宝马的车辆模型都交给我我们公司制作了,只是这次又 ...

  3. 设计模式实例(Lua)笔记之七(Decorator模式)

    1.描写叙述 就说说"我"上小学的的糗事吧. 我上小学的时候学习成绩非常的差,班级上 40 多个同学,我基本上都是在排名 45 名以后,依照老师给我的定义就是"不是读书的 ...

  4. 设计模式实例(Lua)笔记之六(Adapter模式)

    1.描写叙述 "我"在 2004 年的时候带了一个项目,做一个人力资源管理,该项目是我们总公司发起的项目,公司一共同拥有 700 多号人,包含子公司,这个项目还是比較简单的,分为三 ...

  5. 设计模式C++描述----09.桥接(Bridge)模式

    一. 举例 N年前: 计算机最先出来时,软件和硬件是一绑在一起的,比如IBM出了一台电脑,上面有一个定制的系统,假如叫 IBM_Win,这个IBM_Win系统当然不能在HP电脑上运行,同样HP出的HP ...

  6. 设计模式C++学习笔记之五(Factory Method工厂方法模式)

      工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中.核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的 ...

  7. 《图解设计模式》读书笔记9-2 Proxy模式

    目录 Proxy模式 示例程序 程序描述 类图 程序 角色和类图 角色 模式类图 思路拓展 提升速度 代理与委托 Http代理 与其他模式的关联 Decorator模式 Proxy模式 Proxy是代 ...

  8. 《Head First 设计模式》学习笔记——适配器模式 + 外观模式

    在ADO.NET中.对于我们从数据库中取出的数据都要放到一个DataSet中,无论你是Access的数据库,还是SQL的数据库,或者是Oracle的数据库都要放到DataSet中..NET中并没有提供 ...

  9. 《图解设计模式》读书笔记9-1 Flyweight模式

    目录 模式简介 示例代码 代码功能与实现思路 类图 代码 结果图示分析 模式角色和类图 角色 类图 拓展思路 对多个地方产生影响 什么要共享,什么不要共享 垃圾回收 模式简介 Flyweight是轻量 ...

随机推荐

  1. Expected one result (or null) to be returned by selectOne(), but found: 2 和 java.lang.UnsupportedOperationException异常

    在学习MyBatis的时候,简简单单的MyBatis+MySql的增删改查操作,但是却出了问题. 刚开始数据库只有一条数据的时候,岁月静好,一切看起来都那么的OJBK.但是,当我往数据库插入第二条数据 ...

  2. Sum It Up -- 深搜 ---较难

    每一行都是一组测试案例   第一个数字 表示总和 第二个数字表示 一共有几个可用数据  现在 按照从小到大的顺序   输出  那些数字中若干数字之和为总和的  信息 /. 很好很明显的  遍历痕迹 , ...

  3. InterferenceSignal-----------挺简单的 一道题 就是英语不好

    InterferenceSignal 时间限制: 2000ms内存限制: 128000KB 64位整型: Java 类名: 上一题 提交 运行结果 统计 讨论版 下一题 类型: 没有 添加 题目描述 ...

  4. 【洛谷1654/BZOJ4318】OSU!(期望DP)

    题目: 洛谷1654 分析: 本人数学菜得要命,这题看了一整天才看明白-- 先说说什么是"期望".不太严谨地说,若离散型随机变量(可以看作"事件")\(X\)取 ...

  5. 使用yum命令更新时锁住了怎么办?

    出现的状况如下: [root@iZwz951sp834mvbed8gdzzZ ~]# yum update kernelLoaded plugins: fastestmirrorExisting lo ...

  6. DataTable And DataRow

    /// <summary> /// 将DataTable的字段名全部翻译为中文 /// </summary> /// <param name="table&qu ...

  7. Android项目实战_手机安全卫士手机防盗界面

    #安全卫士手机防盗# ###1.Activity的任务栈 1.类似一个木桶,每层只能放一个木块,我们放入木块和取出木块的时候只能从最上面开始操作 ###2.Android中的坐标系![](http:/ ...

  8. 关于用友 U8-UAP二开的一些事

    这是关于一个刚刚接触用友U8的二次开发的一些小心得. 首先就是用友二开的论坛,http://u8dev.yonyou.com/ 当然这个论坛做得不怎么样,提出了好几个问题,都没有回复的. 以下是关于二 ...

  9. java攻城狮之路--复习xml&dom_pull编程

    xml&dom_pull编程: 1.去掉欢迎弹窗界面:在window项的preferences选项中输入“configuration center” 找到这一项然后     把复选框勾去即可. ...

  10. select2下拉插件

    下拉单选: 1.行内 1)初始化数据: <select class="form-control select5"> <option selected>张三1 ...