
设计模式
文章平均质量分 81
AcceptedF
这个作者很懒,什么都没留下…
展开
-
设计模式-代理模式
一、代理模式代理模式是为其他对象提供一种代理,以控制对这个对象的访问。代理模式在访问对象时引入了一定程度的间接性,这种间接性可以附加很多功能。应用:1.远程代理,为一个对象在不同的地址空间提供局部代表,可以隐藏一个对象存在于不同地址空间的事实。2.虚拟代理,根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象。浏览器用代理模式来优化下载。3.安全代理,用来控制真实对象访问时原创 2017-10-01 19:49:38 · 267 阅读 · 1 评论 -
设计模式-简单工厂模式
一、简单工厂模式简单工厂模式用一个单独的类来实例化具体对象的一种方式。待解决的问题:到底实例化哪个对象?将来增加实例化对象的类型后,如何扩展?好处:充分利用面向对象的继承、封装和多态三大特性的好处-可复用、可维护和可扩展。二、UML类图用一个单独的类,根据不同的参数去实例化对应的对象。以运算简单工厂为例,简单工厂类OperationFactory,定义了一个静态方法create原创 2017-10-01 14:29:08 · 266 阅读 · 0 评论 -
设计模式-装饰者模式
一、装饰者模式装饰者模式是为已有功能动态地增加更多功能的一种方式。待解决的问题:当系统需要新功能的时候,是向旧的类中添加新的代码。这些新加的代码通常装饰了原有类的核心职责或主要行为。这种方式的缺点是在主类中加入了新的字段,新的方法和新的逻辑,从而增加了主类的复杂度。而新加入的东西仅仅是为了满足一些只在某些特定情况下才会执行的特殊需要。装饰模式:把每个要装饰的功能放在单独的类中,并让这个原创 2017-10-01 12:47:06 · 225 阅读 · 0 评论 -
设计模式-策略模式
一、策略模式策略模式定义了一系列算法的方法并进行了封装,所有这些方法完成的都是相同的方法,只是具体实现不同。可以以相同的方式调用所有的算法,减少了各种算法类与使用算法之间的耦合。优点:1.策略模式的策略类定义了一系列的可供重用的算法或行为,有助于析取算法的公共功能。2.简化了单元测试,每个算法都有自己的类,可以通过自己的接口单独测试。二、UML类图Context定义了一个Strat原创 2017-10-01 16:29:23 · 234 阅读 · 0 评论 -
设计模式-工厂模式
一、工厂模式工厂模式定义了一个用于创建对象的接口,让子类决定实例化哪一个类。简单工厂模式好处:工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态地实例化相关的类,对于客户端而言,去除了与具体产品的依赖。例如,利用简单工厂模式来实现计算器,运算工厂根据不同的运算要求动态返回具体的运算类。简单工厂模式缺陷:一旦需要增加新的运算类,就必须修改运算工厂的逻辑,违反了开放-封闭原则。工厂原创 2017-10-01 21:09:56 · 227 阅读 · 0 评论 -
设计模式-原型模式
一、原型模式定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模型其实是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。类型:创建型类型优点和使用场景:1.使用原型模型创建对象比直接new一个对象在性能上要好的多,原因是Object的clone方法是一个本地方法,直接操作内存中的二进制流。2.简化对象的创建。注意事项-深拷贝和浅拷贝:原创 2017-10-02 17:20:56 · 229 阅读 · 0 评论 -
设计模式-模板方法模式
一、模板方法模式定义:定义一个操作中的算法骨架,而将一些步骤延迟到子类。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。类型:行为型模式。特点:通过把不变的行为搬移到超类,去除子类中的重复代码来体现它的优势,提供了一个很好的代码复用平台。二、UML类图模板抽象类AbstractClass实现了一个模板方法,定义了算法的骨架,如顺序执行PrimitiveO原创 2017-10-02 20:14:24 · 212 阅读 · 0 评论