java

位置:IT落伍者 >> java >> 浏览文章

经典:从追MM谈Java的23种设计模式[2]


发布日期:2019年10月04日
 
经典:从追MM谈Java的23种设计模式[2]

桥梁模式将抽象化与实现化脱耦使得二者可以独立的变化也就是说将他们之间的强关联变成弱关联也就是指在一个软件系统的 抽象化和实现化之间使用组合/聚合关系而不是继承关系从而使两者可以独立的变化

COMPOSITE—Mary今天过生日我过生日你要送我一件礼物好吧去商店你自己挑这件T恤挺漂亮这 条裙子好看这个包也不错买了三件了呀我只答应送一件礼物的哦什么呀T恤加裙子加包包正好配成一套呀 小姐麻烦你包起来……MM都会用Composite模式了你会了没有?

合成模式合成模式将对象组织到树结构中可以用来描述整体与部分的关系合成模式就是一个处理对象的树结构的模式合成 模式把部分与整体的关系用树结构表示出来合成模式使得客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待

DECORATOR—Mary过完轮到Sarly过生日还是不要叫她自己挑了不然这个月伙食费肯定玩完拿出我去年在华山顶上照的照片 在背面写上最好的的礼物就是爱你的Fita再到街上礼品店买了个像框(卖礼品的MM也很漂亮哦)再找隔壁搞美术设计的Mike设计了一 个漂亮的盒子装起来……我们都是Decorator最终都在修饰我这个人呀怎么样看懂了吗?

装饰模式装饰模式以对客户端透明的方式扩展对象的功能是继承关系的一个替代方案提供比继承更多的灵活性动态给一个 对象增加功能这些功能可以再动态的撤消增加由一些基本功能的排列组合而产生的非常大量的功能

FAÇADE—我有一个专业的Nikon相机我就喜欢自己手动调光圈快门这样照出来的照片才专业但MM可不懂这些教了半天也 不会幸好相机有Façade设计模式把相机调整到自动档只要对准目标按快门就行了一切由相机自动调整这样MM也可以用这个相机给我 拍张照片了

门面模式外部与一个子系统的通信必须通过一个统一的门面对象进行门面模式提供一个高层次的接口使得子系统更易于使用 每一个子系统只有一个门面类而且此门面类只有一个实例也就是说它是一个单例模式但整个系统可以有多个门面类

FLYWEIGHT—每天跟MM发短信手指都累死了最近买了个新手机可以把一些常用的句子存在手机里要用的时候直接拿出来 在前面加上MM的名字就可以发送了再不用一个字一个字敲了共享的句子就是FlyweightMM的名字就是提取出来的外部特征根据上下文 情况使用

享元模式FLYWEIGHT在拳击比赛中指最轻量级享元模式以共享的方式高效的支持大量的细粒度对象享元模式能做到共享的关 键是区分内蕴状态和外蕴状态内蕴状态存储在享元内部不会随环境的改变而有所不同外蕴状态是随环境的改变而改变的外蕴状态不能 影响内蕴状态它们是相互独立的将可以共享的状态和不可以共享的状态从常规类中区分开来将不可以共享的状态从类里剔除出去客户 端不可以直接创建被共享的对象而应当使用一个工厂对象负责创建被共享的对象享元模式大幅度的降低内存中对象的数量

PROXY—跟MM在网上聊天一开头总是hi你好你从哪儿来呀?你多大了?身高多少呀?这些话真烦人写个程序 做为我的Proxy吧凡是接收到这些话都设置好了自动的回答接收到其他的话时再通知我回答怎么样酷吧

代理模式代理模式给某一个对象提供一个代理对象并由代理对象控制对源对象的引用代理就是一个人或一个机构代表另一个 人或者一个机构采取行动某些情况下客户不想或者不能够直接引用一个对象代理对象可以在客户和目标对象直接起到中介的作用客户 端分辨不出代理主题对象与真实主题对象代理模式可以并不知道真正的被代理对象而仅仅持有一个被代理对象的接口这时候代理对象不 能够创建被代理对象被代理对象必须有系统的其他角色代为创建并传入

以下是引用片段

publicinterfaceFactoryProxy{

publicPeoplecreateBoy();

publicPeoplecreteGirl();

}

CHAIN OF RESPONSIBLEITY—晚上去上英语课为了好开溜坐到了最后一排前面坐了好几个漂亮的MM哎找张纸条写上 Hi可以做我的女朋友吗?如果不愿意请向前传纸条就一个接一个的传上去了糟糕传到第一排的MM把纸条传给老师了听说是个老处 女呀快跑!

责任链模式在责任链模式中很多对象由每一个对象对其下家的引用而接

起来形成一条链请求在这个链上传递直到链上的某一个对象决定处理此请求客户并不知道链上的哪一个对象最终处理这个请 求系统可以在不影响客户端的情况下动态的重新组织链和分配责任处理者有两个选择承担责任或者把责任推给下家一个请求可以最终 不被任何接收端对象所接受

COMMAND—俺有一个MM家里管得特别严没法见面只好借助于她弟弟在我们俩之间传送信息她对我有什么指示就写一张纸条 让她弟弟带给我这不她弟弟又传送过来一个COMMAND为了感谢他我请他吃了碗杂酱面哪知道他说我同时给我姐姐三个男朋友送 COMMAND就数你最小气才请我吃面

命令模式命令模式把一个请求或者操作封装到一个对象中命令模式把发出命令的责任和执行命令的责任分割开委派给不同的 对象命令模式允许请求的一方和发送的一方独立开来使得请求的一方不必知道接收请求的一方的接口更不必知道请求是怎么被接收以 及操作是否执行何时被执行以及是怎么被执行的系统支持命令的撤消

[] [] []

               

上一篇:经典:从追MM谈Java的23种设计模式[3]

下一篇:经典:从追MM谈Java的23种设计模式[1]