- 博客(11)
- 资源 (1)
- 收藏
- 关注
原创 浅谈设计模式之命令模式
命令模式是将发起命令者(比如万能遥控器)和接收命令者(比如电视、空调)进行解耦的一种模式。命令模式通过将命令封装成对象,让每个命令对象实现同一个接口,这样对于命令发起者,只需要持有该命令对象,并调用接口中通用的方法即可,而不需要关心命令对象实现的细节。命令模式的主要代码如下:首先是命令的接口,它对外暴露一个方法:public interface Command{void execute();}然后是命令对象,这个对象会持有一个具体的目标类,拿tv举例:public class TVTurnOnC
2020-06-01 19:37:30
208
原创 浅谈设计模式之单例模式
单例模式应该是最好理解的模式了,他保证一个类在全局只有一个实例,并且提供一个全局访问该实例的方法。对于线程池,日志这种就需要使用单例了,单例有两种实现方法,懒汉式和饿汉式,JVM中使用的是懒汉式,即需要的时候才进行创建。懒汉式创建单例的方法如下:public class Singleton{//使用volatile避免指令重排private volatile static Singleton singleton;private Singleton(){}public static Singl
2020-05-29 08:39:16
203
原创 浅谈设计模式之工厂模式
工厂模式是一种创建类型的模式,通过将工厂方法延迟到子类实现,来避免依赖具体类。在工厂模式里有四个角色,工厂抽象类,具体工厂类,抽象产品类,具体产品类。抽象工厂模式定义了一个产品族。首先实现一个接口定义产品族,对于产品族中的每个方法,都对应一个具体的产品的实现,这种实现也通常是用工厂方法来实现的。...
2020-05-28 19:23:30
204
原创 浅谈设计模式之装饰者模式
装饰者模式,即我想在不改变A类的情况下,为A类添加新的职责,传统的做法可能是用继承的方式,实现类B extends A,但是这样做的缺点是:B违反了单一职责,如果今后要装饰的功能多了,得每次都实现一个新类,并且装饰是不可调顺序的(A->B->C可以,A->C->B得再实现),带来的后果是系统会越来越复杂,类越来越多;装饰者模式通过让被装饰对象A和装饰者实现同一个抽象类的方法,这样就可以在原来用A的地方,直接可以传一个用B或C封装的类,因为对使用者来说,我只需要认这个抽象类就好了。拿
2020-05-26 20:33:15
199
原创 浅谈设计模式之观察者模式
观察者模式是一种用途很大的设计模式,可以将主动查询转为被动等待,即“你不要call我,有事我会call你”,这样可以大大减少交互的次数。观察者模式中有两个角色,观察者(Observer)和被观察者(Subject,也称为主题),观察者可以决定要不要订阅主题,如果订阅了,主题会在自身发生变化的时候通知这些关心的观察者;如果你不关心这个主题了,也可以把自己从列表移除,观察者模式的主要代码如下,对于主题的实现(已省略Subject的interface): public class ConcreteSubj..
2020-05-25 18:27:48
211
原创 浅谈设计模式之策略模式
策略模式,即通过封装算法簇接口,来实现在运行时的动态绑定。首先我们要定义接口,即你想让类拥有的能力。对于鸭子来说,叫(quack)和飞(fly)即可定义成两种能力,分别定义为:public interface QuackBehavior{ void quack(){}}public interface FlyBehavior{ void fly(){}}接下来我们可以通过实现接口来定义不同的动作,比如flyWithWings,最后通过在目标类Duck中包含这两个接口,...
2020-05-25 08:52:29
143
原创 浅谈设计模式之适配器模式
生活当中就有很多适配器的例子,220v转110v的电源接头,各类usb转换头,其实适配器做的就是让调用方觉得你就是他想要的对象,所谓狸猫换太子,说的就是他了。比如我有一个鸭子接口(Duck),它会嘎嘎叫(quack),也会飞(fly);现在我有只鹅也想混入鸭子当中,但是鹅的叫法是哦哦(honk),鹅太胖了只会跑(run),那我想把鹅加入鸭群,就需要实现一个DuckAdaptor,由这个adaptor去实现duck接口;public DuckAdaptor implement Duck {privat
2020-05-17 11:29:29
159
原创 浅谈设计模式之状态模式
当系统中存在多种互相之间独立的状态,每种状态都面向同样的行为的时候,就可以通过状态模式来进行区分。状态模式有两个主要的对象,一个是操作类,一个是状态类。拿自动糖果贩卖机举例,这个贩卖机(machine)提供了操作,而贩卖机存在几种状态,分别是售空状态(SoldOutState),已投币状态(HasMoneyState),未投币状态(NoMoneyState),售出状态(SoldState),他们都实现状态接口(State),并实现处理每一个动作的方法。一开始糖果机里没有糖果,就属于售空状态,需要初始化这个m
2020-05-17 11:01:11
228
原创 浅谈设计模式之模板方法模式
模板方法模式,即通过将一些公用的方法放在父类,而将一些个性化的方法延迟到子类实现,来达到可扩展的效果。父类声明成抽象类而不是接口,这样父类就可以实现一些通用的方法。比如做披萨和做包子,都是需要和面,但是包的动作是不一样的。...
2020-05-12 20:10:22
125
原创 浅谈设计模式之外观模式
外观模式简单的说就是把一些复杂的接口进行整理,整理后对外只暴露一个接口,这样做的好处就是可以封装一些标准的动作,比如洗碗机按一下启动就会自动顺序执行加水浸泡–洗碗–烘干 的全流程。对于复杂的系统,就需要借助外观模式进行一层层的包装,来达到很好的解读。...
2020-05-12 20:01:02
151
原创 VS平台下制作简单的播放器(利用Qt类库)
最近在学Qt,但是发现在Qt Creator 下能正常运行的程序想直接移植到VS下还是要花点功夫的。由于在Creator当中并没有UI_xx.h文件,项目当中的声明和creator不一样,所以在摸索过程中遇到了一些障碍,本文在VS中已经配置好Qt的前提下,在VS平台下制作了一款播放器,支持mp3和mp4格式。下面贴上代码:1.在ui_xx.h下先画好界面,如下图接下来是.h文件,代
2015-04-28 10:47:44
1945
1
classfinal-fatjar-1.2.1.jar
2021-07-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人