-
Notifications
You must be signed in to change notification settings - Fork 0
zhangxin1932/java-design-pattern
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
#1.面向对象设计的基本原则 ###1.11OCP(开闭原则:open-closed principle): 一个软件的实体应当对扩展开放,对修改关闭,如: 当需要对已有程序增加功能时,尽量增加实现类来修改,避免在原有的类上直接修改 ###1.2DIP(依赖倒转原则: dependency inversion principle): 要针对接口编程,不要针对实现编程 ###1.3LoD(迪米特原则: Law of Demeter): 只与你直接的朋友通信,而避免和陌生人通信 #2.工厂模式 核心本质: ---实例化对象,用工厂方法代替new操作 ---将选择实现类,创建对象同一管理和控制,从而将调用者跟实现类解耦 ###2.1简单工厂模式: 用来生产同一等级结构中的任意产品(对于增加新产品时,需要修改已有代码,不满足OCP原则) ###2.2工厂方法模式: 用来生产同一等级结构中的固定产品(支持增加任意产品) ###2.3抽象工厂模式: 用来生产不同产品族的全部产品(对于增加新的产品,无能为力;支持增加产品族) #3.建造者模式(builder) 核心本质: ---分离了对象子组件的单独构造(由builder来负责)和装配(由director来负责),从而可以构造出复杂的对象 --- 该模式适用于:某个对象的构建过程复杂的情况下使用 --- 由于实现了构建和装配的解耦,不同的构建器,相同的装配,可以作出不同的对象; --- 相同的构建器,不同的装配顺序也可以作出不同的对象; --- 也就是实现了构建算法,装配算法的解耦,实现了更好的复用 #4.观察者模式 核心本质: ---主要用于1:N的通知.当一个对象(目标对象,subject或者Obserable)的状态变化时,他需要告知一系列对象(Observer),令他们作出响应 ---通知观察者的方式: -推: 每次都会把通知以广播的形式发送给所有观察者,所有观察者只能被动接收 -拉: 观察者只要知道有情况即可.至于什么时候获取内容,获取什么内容,都可以自主决定. ---其中,多个订阅者,客户称之为观察者,需要同步给多个订阅者的数据封装到对象中,称之为目标/主题. #5.桥接模式 核心本质: ---将实现与抽象放在两个不同的类层次中,使两个层次可以独立 ---系统有多维角度分类时,而每一种分类又有可能变化,考虑使用桥接模式 ---桥接的目的是分离抽象与实现,使抽象和实现可以独立变化。 桥接模式与策略模式的差异: ---桥接的目的是让底层实现和上层接口可以分别演化,从而提高移植性 ---策略的目的是将复杂的算法封装起来,从而便于替换不同的算法 ---桥接模式是往往是为了利用已有的方法或类 ---策略模式是为了扩展和修改,并提供动态配置 ---桥接模式强调接口对象仅提供基本操作 ---策略模式强调接口对象提供的是一种算法 #6.责任链模式 ---如果有多个对象都有机会处理请求,责任链可使请求的发送者和接收者解耦,请求沿着责任链传递,直到有一个对象处理了它为止。 ---优点: ---将请求的发送者和接收者解耦,使多个对象都有机会处理这个请求 ---可以简化对象,因为它无须知道链的结构 ---可以动态地增加或删减处理请求的链结构 ---缺点: ---请求从链的开头进行遍历,对性能有一定的损耗 ---并不保证请求一定被处理 ---适用场合: ---有多个对象可以处理一个请求 ---不明确接收者的情况 ---有序、无序链,线型、树形、环形链 ---责任链模式和状态模式主要区别: ---责任链模式注重请求的传递 ---状态模式注重对象状态的转换 #7.装饰者模式 ---装饰者模式:动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性 ---如: 主体:咖啡, 调料:牛奶, 糖 ---如: jdk中的IO流的设计
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published