配色: 字号:
HeadFirst设计模式
2020-11-13 | 阅:  转:  |  分享 
  
HeadFirst设计模式2020-11-10演讲人011设计模式入门1设计模式入门OO基础OO特性设计原则设计模式Other1设计模
式入门OO基础抽象、封装、多态、继承OO基础抽象、封装、多态、继承1设计模式入门OO特性可复用、可扩充、可维护OO特性可复用、可
扩充、可维护封装变化针对接口编程,而不是针对实现编程。多用组合,少用继承。1设计模式入门设计原则封装变化找出应用中可能需要改变
之处,把它们独立出来,不要和那些不需要改变的代码混在一起。1、把会变化的部分取出并封装起来,以便以后可以轻易地改动或扩充此部分,
而不影响不需要改变的其他部分。2、系统中的某部分改变不会影响其他部分。设计原则针对接口编程,而不是针对实现编程。设计原则多用组合
,少用继承。1设计模式入门设计模式策略模式(Strategy)策略模式(Strategy)定义了算法族,分别封装起来,让它们之间
可以互相替换,此模式让算法的变化独立于使用算法的客户。类图ABCD鸭子模型演化hasa/isa的区别共享词汇补充:如何绘制类图
1设计模式入门OtherOther鸭子模型演化hasa/isa的区别共享词汇补充:如何绘制类图022观察者模式(Ob
server)KINGSOFT定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。A
bout2观察者模式(Observer)0106为了交互对象之间的松耦合设计而努力。java.util.Observable05
020403类图松耦合2观察者模式(Observer)类图ProcessOn地址01022观察者模式(Observer)当两个
对象之间松耦合,它们依然可以交互,但是不太清楚彼此的细节。松耦合的设计之所以让我们建立有弹性的OO系统,能够应对变化,是因为对象之
间的相互依赖降低到了最低。松耦合2观察者模式(Observer)01有多个观察者时,不可以依赖特定的通知次序About02观察者
模式,默认方式是被观察者推送数据;其实也可以观察者拉数据。033装饰者模式(Decorator)044工厂模式(Fac
tory)简单工厂(SimpleFactory)这其实是一种编程习惯而非设计模式:将实例化哪一个类的操作移到单独的一个类中,形成
工厂和客户的关系。类图4工厂模式(Factory)工厂方法模式(FactoryMethod)定义了一个创建对象的接口,但由子类
决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。抽象工厂模式(AbstractFactory)提供一个接口,用于创建
相关或依赖对象的家族,而不需要明确指定具体类。类图工厂方法&抽象工厂工厂方法使用继承,把对象的创建委托给子类,子类实现工
厂方法来创建对象。允许类将实例化延迟到子类进行。抽象工厂使用对象组合,对象的创建被实现在工厂接口所暴露出来的方法中。创建相关的对
象家族,而不需要依赖他们的具体类。依赖倒置原则:要依赖抽象,不要依赖具体类。不要让类派生自具体类。不要覆盖基类中已实现的方法。变量
不可以持有具体类的引用。如果使用new,就会持有具体类的引用。你可以改用工厂来避开这样的做法。如果派生自具体类,你就会依赖具体类。
请派生自一个抽象(接口或抽象类)。如果覆盖基类已实现的方法,那么你的基类就不是一个真正适合被继承的抽象。基类中已实现的方法,应该由
所有的子类共享。所有的工厂都是用来封装对象的创建。014工厂模式(Factory)About所有工厂模式都通过减少应用程序和具体
类直接的依赖促进松耦合。02055单件模式(Singleton)5单件模式(Singleton)用来创建独一无二的,只能有一个
实例的对象。确保一个雷只有一个实例,并提供全局访问点5种单件模式的写法About确定在性能和资源上的限制,然后笑笑地选择适
当的方案来实现单击,以解决多线程的问题。如果使用多个类加载器,可能导致单间失效而产生多个实例。066命令模式(Command)6
命令模式(Command)将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。A
bout命令模式将发出请求的对象和执行请求的对象解耦。在被解耦的两者之间是通过命令对象进行沟通的。命令对象封装了接手这和一个或一
组动作。命令可以支持撤销,做法是实现一个undo()方法来回被执行前的状态。宏命令是命令的一种简单的延伸,允许调用多个命令。0
77适配器(Adapter)&外观模式(Facade)7适配器(Adapter)&外
观模式(Facade)020301外观模式About适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本的接口不兼
容的类可以合作无间。提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。最少知识原则:只
和你的密友谈话。适配器将一个对象包装起来以改变其接口;装饰者将一个对象包装起来以增加新的行为和责任;外观将一群对象“包装”起来
以简化其接口。外观不只是简化接口,也将客户从组建的子系统中解耦。外观和适配器可以包装许多类,但是外观的意图是简化接口,而适配器的意
图是将接口转换成不同接口。088模板方法模式(TemplateMethod)8模板方法模式(TemplateMethod)
099迭代器(Iterator)&组合模式(Composit9迭代器(Iterator)&
组合模式(Composite)1010状态模式10状态模式1111代理模式(Proxy)11代理模式(Proxy)12
12复合模式12复合模式1313与设计模式相处13与设计模式相处模式反模式0102在某情境(context)下,针对某问题
的某种解决方案。模式分类13与设计模式相处模式0304警告四人组在某情境(context)下,针对某问题的某种解决方案。情境:应
用某个模式的情况。问题:你想在某情境下达到的目标。解决方案:一个通用的设计,用来解决约束、达到目标。分类一ABC创建型行为型结构型
分类一创建型SingletonFactoryMethodAbstractFactoryBuilderPrototype分类一行
为型TemplateMethodIteratorCommandObserverStateStrategy分类一行为型Mediat
orVisitorMementoInterpreterChainofResponsibility分类一结构型Decorator
CompositeProxyFacadeAdapterBridgeFlyweight分类二类TemplateMethod/Ad
apter/FactoryMethod/Interpreter对象Composite/Decorator/Proxy/Stra
tegy/Bridge/Flyweight/AbstractFactory/Singleton/Builder/Prototyp
e/State/Mediator/ChainofResponsibility/Observer/Facade/Command
/Iterator/Visitor/Memento警告过度使用设计模式可能导致代码被过度工程化。应该总是用最简单的解决方案完成工
作,并在真正需要模式的地方才使用它。四人组ErichGamma/RichardHelm/RalphJohnson/
JohnVlissides13与设计模式相处反模式告诉你如何采用一个不好的解决方案解决一个问题。14附录A.1桥接模式(Bridge)附录A.1桥接模式(Bridge)使用桥接模式不只改变你的实现,也改变你的抽象。将抽象部分与它的实现部分分离,使它们都可以独立地变化。15附录A.2生成器模式(BuilderPattern)附录A.2生成器模式(BuilderPattern)使用生成器模式封装一个产品的构造过程,并允许按步骤构造。感谢聆听
献花(0)
+1
(本文系职场细细品原创)