`
石头的日记
  • 浏览: 199146 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类

策略模式所解决代码复用问题

阅读更多

1  定义、

我们先看下策略模式的定义:

  策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

2 图:

 

注:图是从百度上搜的,原图地址:http://baike.baidu.com/image/4abae5eda6d0d15179f05577

3 :场景描述

  人有基本的行为:吃饭、睡觉、工作

  人物:小明、小丁

4:应用描述

解决代码复用第一步:

  首先小明和小丁都有三种行为,为了解决代码复用的问题,我们用一个抽象类来封装基本行为

 

public abstract class Person {
	public void eat(){
		System.out.println("eat");
	}
	public void sleep(){
		System.out.println("sleep");
	}
	public void work(){
		System.out.println("work");
	}
}

  问题来了,我有一些变化,小明和小丁,工作的内容都不一样的,我们怎么办? 

  目前解决方案:

     1、可以把work方法给覆盖掉 —— 缺点:那要是多个人那,还有小海,小猪...难道都要针对每一个个去写,而且关键不是所有的人都有工作

      2、把work 方法移出来,搞到一个接口里面,谁有工作,谁实现  ——缺点:小明和小丁做同样的工作两者都实现了,这就是重复,还要针对每一个人去实现word方法,很累

   两者都为解决代码复用问题

     我们要对work做的两点:复用,变动

  用策略模式就很好的解决到这点,把work方法单独封装到一个接口里,然后再由perSon来引用,针对接口编程,而不是针对实现编程

 

 

 

  • 大小: 4.9 KB
分享到:
评论

相关推荐

    设计模式之策略和模板方法模式

    (3)、效果:模板方法是一种代码复用的基本技术。它们在类库中尤为重要,它们提取了类库中的公共行为。(4)、注意事项:A、使用C++访问控制:在C++中,一个模板方法调用的原语操作可以被定义为保护成员。这保证它们只...

    javascript设计模式之策略模式学习笔记

    策略模式中的代码可以复用。 一:使用策略模式计算奖金; 下面的demo是我在书上看到的,但是没有关系,我们只是来理解下策略模式的使用而已,我们可以使用策略模式来计算奖金问题; 比如公司的年终奖是根据员工的...

    Java 设计模式详解超详细(含示例代码)

    行为型模式则关注对象的交互和职责分配,包括观察者模式、策略模式、模板方法模式等。 使用设计模式的好处包括: 提高软件的可维护性和可复用性,因为设计模式提供了通用的设计语言和最佳实践。 使代码更易于理解和...

    从表单校验看JavaScript策略模式的使用详解

    那么表单的优劣就成了前端开发者急需解决的问题。其实我更愿意称为“代码的可读性”或“可复用性”以及“是否冗杂”。 表单也有“优劣”?你在开玩笑嘛? 我想你可以认真看下下面的代码,它用到了一些“新知识”: ...

    设计模式之策略模式

    策略模式的详细介绍。有些时候,尽管你觉得对一门语言已有一定了解了,但是在编码时,依然会感觉到困难。感觉代码之间的关系剪不断理还乱,想要复用的代码,最后重复写了N次,最后导致代码量比想象中多出了几倍。...

    JAVA23种设计模式及快捷记忆

    它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式、适配器模式、装饰者模式、代理模式、外观模式、桥接模式...

    java中的设计模式,主要的设计模式

    适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、享元模式观察者模式、策略模式、模板模式、责任链模式、解析器模式、迭代子模式 命令模式、状态模式、备忘录模式、访问者模式、中介者模式

    设计模式:可复用面向对象软件的基础--详细书签版

    2.3.3 策略模式 29 2.4 修饰用户界面 29 2.4.1 透明围栏 29 2.4.2 monoglyph 30 2.4.3 decorator 模式 32 2.5 支持多种视感标准 32 2.5.1 对象创建的抽象 32 2.5.2 工厂类和产品类 33 2.5.3 abstract ...

    分支模式在SVN环境下的应用

    关于分支模式并行软件开发是企业级环境下软件开发的一种不可避免的模式,这种开发模式可以说是任何大中型软件产品和项目所必需的。然而,并行开发在为我们的开发效率提高保证的同时,也会给我们的开发管理带来诸多...

Global site tag (gtag.js) - Google Analytics