设计模式
Hello_1024
愿你所得过少时,不必终日愤愤;
愿你所得过多时,不必终日惶恐。
展开
-
设计模式一————工厂模式
简单工厂工厂方法抽象工厂对比1.简单工厂:一个产品类作为所有产品的父类,一个工厂类中的静态方法负责创建所需要的对象。通过传递一个字符串,在工厂类的静态方法中用一个switch来确定该字符串对应的类对象,创建完成后进行返回即可。伪代码如下:public class Factory { public static Product createProduct(String string...原创 2018-11-19 00:21:31 · 443 阅读 · 0 评论 -
设计模式十四————命令模式
命令模式:将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。命令模式初步理解:客户直接去操作机器的话要输入一条一条的命令,这样做显然效率很低。可以写成脚本的形式,一次执行。命令模式也是这样的,为了降低耦合,将一个个命令封装成对象。客户不直接调用命令去执行任务,有个记录的类暂且叫服务类。服务类用来记录用户发出的请求,当所有的请求都发送...原创 2019-01-17 18:05:54 · 189 阅读 · 0 评论 -
设计模式十三————桥接模式
桥接模式:将抽象部分与实现部分相分离,使得他们都可以相互独立的变化。 上一篇 ---The End--- 下一篇原创 2019-01-06 14:04:47 · 448 阅读 · 4 评论 -
设计模式七—————建造者模式
建造者模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式初步理解:建造者模式是用来创建复杂对象的,这个对象内部可能会有很多其他很多父类对象的引用。在创建这个复杂的对象时,就要给这些引用赋值。因此产生一个build类,内部是给这些引用赋值。由于这些引用可以指向很多派生类,因此复杂对象会千变万化。根据客户端的需求将复杂对象的引用指向不同的派生类。因此有必要...原创 2018-12-18 23:25:07 · 179 阅读 · 0 评论 -
设计模式二————策略模式
策略模式定义:定义了算法家族,分别封装起来,让它们之间可以相互替换,次设计模式让算法的变化,不会影响到使用算法的客户端。策略模式的实现:定义一个统一的接口,分别用不同的类来实现该接口,在不同的类中是不同的算法。在context类中维护了一个接口的引用,当引用引用不同的对象时调用不同的方法。code…支付的方法有三种:现金、wechat和Card,定义一个统一的支付方法。定义的接口:pu...原创 2018-12-12 07:10:47 · 211 阅读 · 0 评论 -
设计模式十二————单例模式
单例模式定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。实现手段:将构造方法私有化,在类外不能创建对象。只能通过类内的静态方法创建对象。第一次访问这个静态方法时,创建一个对象,并将对象的引用返回;第二次访问这个对象时直接将引用返回。code…单例类:public class Singleton { private static Singleton singleton=...原创 2018-12-21 19:25:49 · 330 阅读 · 0 评论 -
设计模式十一————组合模式
组合模式定义:将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。组合模式初步理解:将对象分为部分和整体,整体;部分和整体又属于一个大的整体,整体中又有部分和整体。整体和部分有一些公共的属性,因此有必要抽象出一个类,使整体和部分继承这个类。code…抽象的父类,为整体和部分提供属性和方法:public abstract class C...原创 2018-12-21 17:21:32 · 179 阅读 · 0 评论 -
设计模式六—————外观模式
外观模式定义:为子系统的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式的初步理解:为复杂的子系统构建一个外观类,将调用子系统的方法的调用过程集成在外观类中。通过调用外观类的方法来调用子系统的方法。这样做可以简化对子系统的操作。code…子系统,共有四个,但是代码都类似。这里只展示一个:public class SystemOne { ...原创 2018-12-16 16:50:33 · 164 阅读 · 0 评论 -
设计模式五—————原型模式
原型模型定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模型初步理解:通过已经创建的对象来复制一个对象,这两个对象一模一样。但是却不是同一个对象。类似于双胞胎,虽然一样,但却是两个个体。每一个对象都有唯一的hashcode,可以通过hashcode是否相等来判断是否为同一个对象。code…克隆分为深克隆和浅克隆先来看浅克隆:浅克隆是指对象中的引用变量所引用的对象...原创 2018-12-15 22:16:51 · 315 阅读 · 0 评论 -
设计模式十————备忘录模式
备忘录模式定义:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个对象。这样以后就可以将该对象恢复到原先保存的状态。初步理解:因为要保存状态,因此要有一个Memento类来存储对象的内部状态。因为有很多状态要保存,因此需要一个CareTaker类来管理这些Memento。Originator是要保存状态的对象。code…Originator类:public class ...原创 2018-12-20 20:32:44 · 179 阅读 · 0 评论 -
设计模式九————状态模式
状态模式定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式初步理解:状态模式内部含有和一个状态对象的引用,当状态不一样时,这个引用所指向的对象也不一样。调用的方法自然也就不一样。和策略模式有些类似。code…状态的抽象接口:public interface State { public void work(Context context);}...原创 2018-12-20 19:45:45 · 196 阅读 · 0 评论 -
设计模式八—————观察者模式
观察者模式定义:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自己更新自己。观察者模式初步理解:多个观察者同时观察同一个被观察者,被观察者状态发生变化时,会通知观察者,使得观察者内部的参数也相应改变。因为要通知被观察者,因此观察者内部要有被观察者对象的引用。因为有多个观察者,所有被观察者中要有一个集合来存...原创 2018-12-20 19:09:14 · 307 阅读 · 0 评论 -
设计模式四————代理模式
代理模式定义:为其他对象提供一种代理以控制对这个对象的访问。代理模式初步理解:代理对象可以代理很多功能,具体要要个功能需要客户端指出,代理对象所做的就是调用某个功能,因此代理对象中要有这些功能对象的引用。为了使引用统一,将所有的功能类继承于统一父类。为了给客户端暴露统一的方法,将代理对象与功能对象也继承于统一父类。code…代理类和功能类的统一父类:public abstract cla...原创 2018-12-14 14:25:37 · 229 阅读 · 0 评论 -
设计模式三————装饰模式
装饰模式定义:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式的初步理解:装饰是对某一个实体进行装饰,装饰的饰品根据装饰的对象不同而不同。对于同一个实体,装饰的顺序也有可能不同。因此就需要就实体而言进行装饰。而装饰品的功能都一样,就是用来修饰实体。因此,所有的装饰品可以继承同一个类;但是为了避免将这些实现类对象的引用放到实体类中(破坏开闭原则,添加新饰品和...原创 2018-12-13 23:51:24 · 443 阅读 · 0 评论 -
设计模式十五————享元模式
享元模式定义:运用共享技术有效地支持大量细粒度地对象。初步理解:代码的共享,不同的用户使用时,存在不同的数据,因此在调用方法时传入封装用户信息的对象即可。code…每件体育用品的功能是相同的,因此体育用品是共享的,但是使用体育用品的人是不一样的。体育用品的基类:public interface ShareSport { public void sport(User user);...原创 2019-01-17 22:29:24 · 233 阅读 · 0 评论