![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
菜瓜_牛顿
枪如惊雷,照一身肝胆
展开
-
发布订阅和观察者模式
观察者模式和发布订阅模式的区别在观察者模式的Subject就向一个发布者Publisher,观察者(Observer)和订阅者(Subscriber)关联。subject通知observers就像publisher发布一样。发布订阅模式从广义上来讲就是观察者模式的一种实现,但是两者是有区别的:Publisher和Subscriber不知道彼此的存在,需要中间的消息调度组件,它把两者联...原创 2020-04-20 17:30:54 · 118 阅读 · 0 评论 -
代理模式1
1、代理模式给某个对象提供一个代理,并由代理对象控制对原有对象的引用。角色:Subject(抽象主题):真实主题和代理类的共同接口,也是客户端访问的对象RealSubject(真实主题):Proxy(代理类):包含一个对真实主题对象的引用,会调用真实主题的方法2、例子 :客户端对象 访问代理对象(身份验证 商务信息查询 日志记录) 代理对象访问真实对象(商务查询系统)原创 2017-03-31 11:54:49 · 173 阅读 · 0 评论 -
外观模式
1、外观模式降低原有系统的复杂度,降低客户端和子系统之间的耦合度,外部和子系统之间的通信通过外观类来实现,比如文件读取 加密 保存 这个三个子系统的操作,没有外观类时 对于不同的文件在客户端都要调用 读取(文件1) 加密 保存(文件1) 如果有10个文件,上述程序要重复10次,加大了客户端和子系统类的操作。引入外观模式(包括 读取 加密 保存)那么客户端每次只要调用外观类这一个就可以。原创 2017-03-31 10:54:19 · 235 阅读 · 0 评论 -
组合模式
1、组合模式组合多个对象形成一种树形结构,表示整体和部分的关系。比如文件目录树,有图像 文本文件 也有子文件夹角色:Component(抽象构件):所有子类共有行为的声明,客户端只要调用该接口或者抽象类中的方法就可以,不用关心具体的操作成员是节点还是叶子Leaf(叶子)Composite(容器):节点2、例子 比如对总公司 各地分公司 部门,/** * @Ti原创 2017-03-31 10:03:32 · 458 阅读 · 1 评论 -
适配器模式
1、适配器模式解决接口不兼容问题模式中的角色 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。 适配者类(Adaptee):需要适配的类或适配者类。 适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。转换器2实现方式:(1)委托方式(对象适配器模式):适配器类继承目标接口 并关联一个适配原创 2017-03-30 23:10:18 · 217 阅读 · 0 评论 -
抽象工厂模式
1、抽象工厂模式(1)引入产品族的概念,产品等级结构:横向的,比如抽象类电视机,子类 海尔电视 TCL电视 海信电视,这几个子类是一个产品等级结构产品族:纵向的(同一个工厂生产的):抽象工厂 海尔工厂 ,产品有海尔冰箱 海尔电视 海尔洗衣机(2)抽象工厂模式下的具体工厂生产的不是具体的一个对象,而是一个产品族(3)工厂模式是针对同一个产品等级结构的,比如海尔电视和海信电视原创 2017-03-30 22:46:19 · 304 阅读 · 0 评论 -
工厂方法模式
1、工厂方法模式如果有很多个具体产品那么简单工厂模式的工厂类中就会有大量的if else,比较难维护,而且添加新的产品时要修改工厂类。而工厂模式让一个类的实例化延迟到子类,所以该模式也被称作虚拟构造器模式或者多态工厂模式。4中角色:Product(抽象产品)ConcreteProduct(具体产品)Factory(抽象工厂)与简单工厂模式相比最大的区别是引入Factory原创 2017-03-30 21:52:21 · 184 阅读 · 0 评论 -
简单工厂模式
1、工厂模式有时候new一个对象实例会带来一些问题,比如一些对象的创建需要一些列步骤:先计算或者取得对象的初始值,选择生成哪个对象实例,或者生成对象之前要创建一些辅助性的对象。这个创建对象的过程可以用工厂模式来表示。简单工厂模式(不是GoF提出的23模式中的) 工厂模式 抽象工厂模式2、简单工厂模式:根据不同的参数返回不同的实例,被创建的实例都有共同的父类。创建实例的方法是静原创 2017-03-30 21:23:01 · 174 阅读 · 0 评论 -
单例模式2
1.序列化和反序列化单例模式IoDH在针对序列化和反序列化模式上还要重写readResolve方法1768005324166053去掉注释readResolve方法24166053反序列化过程中使用了reasResolve方法24166053class TaskManager implements Serializable{ private static final原创 2017-03-30 14:11:51 · 253 阅读 · 0 评论 -
设计模式---单例模式
1、单例模式比如Windows的资源管理器,无论启动多少次都只有一个窗口。为节省资源,并保证唯一性,故需要单例模式。保证唯一性要:(1)禁止外界通过new创建对象,所以该类的构造函数为private(2)让外界可以访问的唯一一个实例对象,所以要有个private static TaskManager tm=null;(3)暴露出一个公共的静态方法让外界调用public stat原创 2017-03-30 11:14:33 · 300 阅读 · 0 评论