自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 设计模式学习(十)--观察者模式

观察者模式(Observer)定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。观察者模式又叫发布-订阅模式,主要用于当一个对象改变,需要同时通知其他对象的时候。主动通知对象也可称为主题,用于检测状态的变更,被通知对象称为观察者,当主题发生变更时,同时改变自身的状态。UML Subject ...

2018-09-07 17:01:00 175

原创 设计模式学习(九)--建造者模式

建造者模式(Builder)将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式主要用于创建一些复杂的对象,这些对象内部构建间的构造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。初次听上去和模板方法模式有点类似。 模板方法模式(TemplateMethod):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算...

2018-09-05 11:37:34 198

原创 设计模式学习(八)-- 外观模式

外观模式(Facade)为系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。当一组接口直接面向客户端提供服务时,各系统间复杂的调用关系,会产生非常复杂而难以维护的系统,直接修改或扩展都会产生很多问题。因此引入外观模式,将这组接口进行封装,提供一个统一的外观类。UML 通过创建Facade类,客户端只需要关心该类的具体实现即可,即使子系统...

2018-09-03 10:48:04 204

原创 设计模式学习(七)--模板方法模式

模板方法模式(TemplateMethod)定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。当我们要完成在某一细节层次一致的一个过程或一系列步骤,担其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理,模板方法模式通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势。UML图 ...

2018-08-31 16:38:58 225

原创 设计模式学习(六)--工厂方法模式

工厂方法模式(Factory Method)定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。之前在简单工厂模式中介绍运算工厂时,我们发现每当我们需要增加一个运算方法时,都需要修改工厂方法,在switch中添加对应的分支,这样做的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品之间的依赖...

2018-08-31 09:34:40 238

原创 设计模式学习(五)--代理模式

代理模式(Proxy) 为其他对象提供一种代理以控制对这个对象的访问。代理,就是真实对象的代表,

2018-08-30 09:43:17 162

原创 设计模式学习(四)--装饰模式

装饰模式(Decorator) 动态地给一个对象添加一些额外的职责,就功能来说,装饰模式比生成子类更为灵活。当某个对象需要动态添加一个或多个具有相同父类的不同子类时,若将这些子类直接关联至该对象,每当关联关系发生变化时,均需要修改该对象代码,耦合度较高,因此产生了装饰模式。通过装饰模式可以把类中的装饰功能搬移去除,简化原有的类,有效地把类的核心职责和装饰功能区分开来,去除了重复的装饰逻辑。...

2018-08-28 09:51:44 155

原创 设计模式学习(三)--设计原则

单一职责原则(SRP) 就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。开放-封闭原则 软件实体(类、模块、函数等等)应该可以扩展,但不可以修改。无论模块是多么的“封闭”,都会存在一些无法对之封闭的变化。既...

2018-08-27 15:04:08 168

原创 设计模式学习(二)--策略模式

策略模式(Strategy):定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。举例 商场现金收银台,不同时期的促销策略不同,包括:无促销固定折扣满减通过策略模式定义一系列促销算法,从概念上看,所有这些算法完成的都是相同的工作,只是实现不同。用户可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。UML图...

2018-08-27 11:42:04 228

原创 设计模式学习(一)--简单工厂模式

设计模式学习(一)–简单工厂模式简单工厂模式,调用者无需了解如何去实例化对象,仅需告知工厂类简单信息,调用工厂类方法生成具体的实现类。例如计算器开发过程中,通过工厂返回虚拟类Operation的具体运算实例,后续当需要修改某个运算的算法时,也不用变更其他运算类。新增运算时,同时在工厂类方法中新增即可。abstract Operation 运算虚拟类public abstract c...

2018-08-27 09:39:45 202

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除