使用基本的设计原则与设计模式的原因:复用与可维护
设计原则:
1.开-闭原则(ocp):一个软件实体应该对扩展开放(底层对业务的实现应该是可灵活改变的,针对接口编程?),对修改关闭(高层的业务逻辑由抽象类定义,确定后不能修改)
eg:模版方法,好莱坞原则
2.里氏代换原则(lsp):任何基类适应的地方,子类一定适用(继承?)
3.依赖倒转原则(dip):要依赖于抽象,不能依赖于实现(针对接口编程?)
a.零耦合 b.具体耦合(耦合关系建立在具体类之间) c.抽象耦合(耦合关系依赖于抽象类或接口)
4.接口隔离原则(isp):使用多个专门的接口比使用单一的总接口要好
原因:服务定制与接口污染
5.组合/聚合复用原则(crad):要尽量使用组合/聚合,而不是使用继承来达到目的
原因:
继承复用的缺点:静态复用
什么使用使用继承:a.满足 is-a的关系,而不是 has-a的关系
b.满足lsp原则
优点:a.简洁 b.父类修改某个方法,子类能获得
6.迪米特法则(lod),也称最少知识原则:一个对象或模块应该和其它对象和模块尽量少的通信(高内聚),涉及的模式有:门面模式,调停者模式,前端控制器模式,业务代表模式,dao模式
设计模式:
什么是设计模式:为了解决特定问题而提出的较通用的解决方案
门面模式:系统通过门面对象,向外界提供粗粒度的业务接口,客户端通过门面对象访问系统,不需要了解系统的内部细节
粒度:对象的相对大小,或提供的宽度(对外提供了业务流程的总结接口)
工厂模式:由工厂对象来实现对象的创建;好处,当扩展时没必要修改引用类的代码
a.简单工厂:一个工厂负责创建所有对象
b.工厂方法:一种对象由一种工厂创建
单例模式:系统中你需要获得某个类的唯一实例(内存中只维护一个实例)
a.懒汉式:有线程安全问题,创建的对象可能不止一次,但只有一个被维护,
其余将会被gc,解决的方法是在静态方法前加synchronized
b.饥饿式
组合模式:描述对象之间整体与部分之间的关系,需使用一个接口装配接口下的单纯元素与复合元素 eg:java.awt.Component的 Container 与java.io.File下的文件与目录
观察者模式:当主题的状态发生改变的时候,需通知其它对象类
eg:java.awt的事件处理机制,数据库的缓存池维持的实例数目
策略模式:从多个相似的算法中选择一个
eg:java.awt中的布局管理器
mvc模式:解决模型层与视图层的耦合问题
m:观察者模式?
v:组合/聚合模式?
c:策略模式?
状态模式:与策略模式类似,对象的行为依赖与其状态,对象必须根据其状态选择不同的行为方式
* 状态模式提供依赖的是其自身的状态,策略模式由一个类控制实现哪一个算法
委托:客户端通过委托类间接调用被委托类的方法,委托类可附加一些操作来为客户端服务
代理:本质上也是一种委托模式,被委托类与委托类都实现同一个接口,客户端不区分被委托类和委托类
分享到:
相关推荐
根据《JAVA与设计模式》整理的笔记及示例代码。
Java设计模式学习笔记
韩顺平_Java设计模式笔记.docx
动力节点Java笔记设计原则与框架思想.pdf
总结了java开发中的21种设计模式,详解和例子,带书签的pdf格式,方便阅读!
23中java设计模式结合生活中用例进行讲解以及spring源码中存在的设计模式才知道原来设计模式如此重要,视频教程链接如下:https://study.163.com/course/courseMain.htm?courseId=1209569921,或者直接在网易云搜索...
java笔记java笔记java笔记java笔记java笔记java笔记java笔记
学习Java设计模式的笔记,标注了其中重要的要点,如果有需要的小伙伴,自行下载哦
收集的java李兴华老师的课件笔记。感觉还不错,适合回顾和新手补习。
java笔记java笔记,java笔记java笔记java笔记java笔记
图解java设计模式_学习笔记_java开发解压密码为twj123
java学习笔记java学习笔记java学习笔记java学习笔记
1) 内容包括: 设计模式七大原则(单一职责、接口隔离、依赖倒转、里氏替换、开闭原则、迪米特法则、合成复用)、UML类图(类的依赖、泛化和实现、类的关联、聚合和组合) 23种设计模式包括:创建型模式:单例模式(8种...
个人Java设计模式笔记,包含26个设计模式的核心说明。
设计模式Head First学习笔记,以及使用java编写的设计模式源码,Java原生sdk实现23种设计模式
Java设计模式笔记-尚硅谷
该文档为java设计模式的整理笔记,有助于大家更详细了解java设计模式
Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记