【设计模式】Java设计模式第零课之策略模式

从今天开始看<<Head First 设计模式>>,打算每学习一章都写一篇笔记,今天的第零篇希望是一个好的开端,能够善始善终.加油.

设计模式入门:策略模式(看实际的需求(情景)是什么,采用适当的策略)

  • 设计原则零:不管当初软件设计的多好,一段时间之后总是成长和改变的,否则软件就会死亡.

  • 设计原则一:找出应用中可能需要变化之处,把他们独立出来,不要和那些不需要变化的代码混在一起
    • 把会变化的部分取出并封装起来,好让其他部分不会受到影响
    • 这样代码引起的不经意后果变少,系统变得更有弹性

  • 设计原则二:针对接口编程,而不是针对现实编程
    • 利用接口带表每一个行为,然后由行为类来实现这些接口
  • 设计原则三:多用组合,少用继承.
    • 使用组合建立系统具有很大的弹性,不仅可以将类的行为分装成类,更可以再运行时动态的改变行为

第一章设计模式入门借助一个鸭子的例子介绍了策略模式.(策略模式的实现主要依靠Java的运行时多态来实现),讲解了OO编程语言中一个良好的类的层次结构设计的重要性,我们在设计一个系统之前都要充分考虑这个系统今后的可扩展性和代码的重用性.

书中的代码要自己亲自敲到机器上运行一遍,认真体会其中的设计思想.

不愿意亲自敲代码的朋友可以参考一下我资源.

http://download.csdn.net/detail/lchad/8441187

时间: 2024-10-13 06:28:28

【设计模式】Java设计模式第零课之策略模式的相关文章

JAVA设计模式(16):行为型-策略模式(Strategy)

场景 某个市场人员接到单后的报价策略(CRM系统中常见问题)报价策略很复杂,可以简单做如下分类: 普通客户小批量报价 普通客户大批量报价 老客户小批量报价 老客户大批量报价 具体选用哪个报价策略,这需要根据实际情况来确定.这时候,我们采用策略模式即可. 我们先采用条件语句处理 public class Test { public double getPrice(String type,double price){ if(type.equals("普通客户小批量")){ System.o

对设计模式的总结之简单工厂与策略模式

前言 面向对象编程追求的本质-提高扩展性.可维护性.灵活性和复用性.合理利用面向对象6个原则,能够很好的达到要求.如何利用好就是至关重要的了,前人总结了23+个设计模式能够让初学者更容易学到其中的精髓,本文就说说我对本人对简单工厂模式.策略模式的见解. 简单工厂模式与策略模式 简单工厂模式 工作中,常常遇到需要做一个功能(鸭子),这个功能中含有可控个数的子操作功能(鸭子叫,鸭子跑,鸭子飞),而且子功能在不同的情况下处理方式又不相同(成年鸭子/小鸭子叫,成年鸭子/小鸭子跑,成年鸭子/小鸭子飞).我

设计模式(一)The Strategy Pattern 策略模式

摘要 策略模式:定义算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的改变独立于使用算法的客户. 设计模式 我们先来看看问题 -- 现在我们需要实现一个模拟鸭子的游戏,游戏中会出现各种各样的鸭子,他们会有不同的飞行方式,同样有不同的鸣叫方式,同时我们要考虑到以后还可能出现更多的各种各样新式的鸭子,那我们该如何来实现呢? 1>我们来试试继承 这是我们的Duck类 ? 1 2 3 4 5 6 7 8 9 package my.oschina.net.design.strategy; pub

JavaScript设计模式与开发实践---读书笔记(5) 策略模式

策略模式的定义是:定义一系列的算法,把它们一个个封转起来,并且使它们可以相互替换. JavaScript版本的策略模式: 奖金系统: var strategies = { "S": function(salary){ return salary*4; }, "A": function(salary){ return salary*3; }, "B": function(salary){ return salary*2; } }; var calc

PHP 设计模式 笔记与总结(8)策略模式

① 策略模式,将一组特定的行为和算法封装成类,以适应某些特定的上下文环境,这种模式就是策略模式. ② 实际应用举例,假如一个电商网站系统,针对男性女性用户要各自跳转到不同的商品类目,并且所有广告位展示不同的广告. 在 Common 目录下新建 UserStrategy.php,定义接口: <?php namespace Common; //定义策略接口 interface UserStrategy{ //显示广告 function showAd(); //展示类目 function showCa

Unity设计模式+Java设计模式,讲解+案例+PPT,一次性学会设计模式,拥抱高薪!

一个程序员对设计模式的理解:“不懂”为什么要把很简单的东西搞得那么复杂.后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“简单”就是一把钥匙开一把锁的模式,目的仅仅是着眼于解决现在的问题,而设计模式的“复杂”就在于它是要构造一个“万能钥匙”,目的是提出一种对所有锁的开锁方案.在真正理解设计模式之前我一直在编写“简单”的代码.这个“简单”不是功能的简单,而是设计的简单.简单的设计意味着缺少灵活性,代码很钢硬,只在这个项目里有用,拿到其它的项目中就是垃圾,

简单工厂设计模式--Java设计模式(一)

一 概念: 简单工厂模式就是通过一个工厂类根据参数动态创建对应的类. 二 案例 我们以汽车作为例子,在现实生活中汽车只是一个抽象的产品,其中有很多类型的汽车才是具体产品,如奔驰.宝马.保时捷等等(当然每个品牌下还有各种版本,这就不做讨论了,假设每个品牌就对应一种车).简单类图如下: 当我们去综合类型的店买车要试开车时,销售员可能最简单直接的方法就是直接拿出他们最畅销的车子出来让你试驾.简易代码如下: public class CarTest { public static void main(S

Java的设计模式----strategy(策略模式)

设计模式: 一个程序员对设计模式的理解: “不懂”为什么要把很简单的东西搞得那么复杂.后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“简单”就是一把钥匙开一把锁的模式,目的仅仅是着眼于解决现在的问题,而设计模式的“复杂”就在于它是要构造一个“万能钥匙”,目的是提出一种对所有锁的开锁方案.在真正理解设计模式之前我一直在编写“简单”的代码. 这个“简单”不是功能的简单,而是设计的简单.简单的设计意味着缺少灵活性,代码很钢硬,只在这个项目里有用,拿到其它的

Java设计模式6:策略模式

策略模式 策略模式的用意是针对一组算法,将每一个算法封装到具有共同接口的独立类中,从而使得它们可以相互替换.策略模式使得算法可以在不影响到客户端的情况下发生变化. 策略模式的结构 策略模式是对算法的包装,是把使用算法的责任和算法本身分开.策略模式通常是把一系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类. 策略模式涉及到三个角色: 1.环境角色 持有一个策略Strategy的引用 2.抽象策略角色 这是一个抽象角色,通常由一个接口或抽象类实现,此角色给出所有具体策略类所需的接口 3.