设计模式

 // 面向对象 (OO, Object Oriented)
// 面向对象的分析(OOA,Object Oriented Analysis)
// 面向对象的设计(OOD,Object Oriented Design)
// 面向对象的编程(OOP,Object Oriented Programming)
// 面向过程 (procedure-oriented)

//依赖倒置:高层(车)依赖 底层(轮子),应该都依赖抽象
//接口分离: IFlyBird : IBird
//替换原则:之类能够替换父类,即重写,也不能重写相反的东西
//开放-闭合: client ---abstract server-server
//单一原则:圆形,几何  ---长方形 ----绘图和面积
//笛米特:类的封装,只提供必需方法
//合成/聚合:set(Ilight light)


//所有原理可以归纳成:写代码前先想什么东西封成一个对象,然后对象A和B继承不同的接口,然后通过桥接set(ILight light)交互








=========================
//关注表示层
//mvc:ui->command(业务逻辑logicutil)->proxy->datacenter(增删查)->mediator->ui
//mvc:相当于中介者模式,c存了m和v的引用,m和v通过c来调用对方,
//puremvc:mediator存view引用,proxy通过mediator来引用,command存proxy引用,view通过command来调用proxy
//业务逻辑:view为界面的交互,model为数据的读存,command为业务的逻辑指当接收到界面的数据,需要进行判断,然后向数据层提交请求,然后传递结果
//ui->command(数据拼接)->proxy->datacenter(增删查)->mediator(数据拆分)->ui
//数据和ui不一起,防止ui关闭了,数据就没了
//业务逻辑和ui逻辑
=========================================
ui->点击左移动->command[ dataCenter.get logicUtil(canAdd(msg)?) sendResult ]->proxy(dataCenter.set)
ui.show       <-mediator logicUtil(msg,split)                               <-proxy(send msg)
客户端传A,服务端传B,dataCenter应该都整合成C
获取点击左移动后的各种数据
======================================================
//业务代表模式:set不一样的字段,返回不一样的对象,对象都继承和重写某个方法
//组合实体模式:一个类里面的setdata和getdata包含了另外两个类的setdata和getdata
//数据访问对象模式:在list里面存放的对象包含了value 和 index
//前端控制器:通过不一样的字段,返回不一样的对象
//拦截过滤模式:  创建多个filter类的子类,然后实现最终的target时,先遍历一次filter类
//服务器定位模式:如果list里面没就创建,然后加入list,如果list里面有就return cache
//传输对象模式:在list里面存对象,对象包括value和index



 
//创建对象
//工厂模式:Sharp-->Circle   factory根据字符串创建子类
//抽象工厂模式:工厂也是被创建对象
//单例模式:GetInstance
//建造者模式:Director(Builder  build)包括了hand foot的实现顺序        build包括(hand foot body)的具体实现 
//原型模式:实现clone接口,对于从数据库从取出的东西克隆一份


//获得新功能
//桥接:SetLight(ILight light)
//适配:Hotel只接受ICharge ,创建一个类继承ICharge而且实现mp3的功能
//过滤器模式: 接口Criteria有Meet方法,不同标准都继承这个方法,输入list<person> 输出list<person>
//组合模式: Employee类里面包含List<Employee>,可以不断迭代下去
//装饰器模式:circle继承shape实现draw方法,reddecoratedshape继承decorated继承shape ,new reddecoratedshape(Shape circle)
//外观模式:shapeMarker里面包含circle和square的引用,只暴露drawcircle和drawsquare方法
//享元模式:shape从Map里面取,为null则创建一个,加入map,与对象池有差别,对象池是用完才放进map
//代理模式:proxyImage包含realImage的引用,减少realImage的创建次数,执行display方法才创建
 
//对象通信
//责任链:SetNext-设置下级  LogMessage-跑下级  text-本级方法   level-唯一标示
//观察者:new Observer(subject)        Subject(list<object>   add    notify)
//命令模式 : invoke调用command的方法, command封装执行者和执行者的方法,执行者doA和doB
//解释器:  TExpression 实现execute方法,AExpression实现传入连个TExpression实现execute方法,实例化两者=定义规则
//迭代器:
//中介者模式:A*100=B,B/100=A,加入中介者存AB的引用,A和B存中介者的引用,通过中介者调用对方
//备忘录模式:setstate(a),savestate(a) = return new state(A) 
//状态模式: state.press(light)     light(new state)   每个state重写press方法
//空对象:    对于存在的对象赋值realCustom,不存在赋值nullCustom,两者都继承custom
//策略模式:  Context(Strategy s)     每个策略继承Strategy 重写excute方法
//模板模式:  父类写好init,start,end的虚方法,并且在play里面调用三者,子类只需重写虚方法
//访问者模式: 多个类继承computerPart且重写accept(visiter v)   visiter则同时实现不同类的visiter.visit
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值