一.概述
类是对特性和行为的封装,接口和抽象类是体现差异化,通过继承来实现多态
* JAVA中的类继承抽象类的缺陷在于,两个不同的子类可能有不同的行为,而都继承一个抽象类,则表现为,一个子类分明没有某一行为,但因为继承了抽象类,它必须实现这一抽象行为,却什么也不做,这不是一个好的策略。
* 于是有了接口,同一类的不同子类因为有不同的行为,可以将所有子类共同的行为抽象出来,放在抽象父类中来继承,不同的行为在放在不同的接口中来实现,这样看来,貌似是一个很好的设计策略,其实仍有一个很大的缺陷,如果有20个子类同时具有某一接口的特性,那么这一特性要被实现20次,这将出现大量的重复设计。
* 于是,策略模式闪亮登场。将这些被大量重复的行为剥离出来,另建一个对应于原类的“行为类”,并让原类拥有一个行为类的依赖,当调用原类的某一行为时,事实上是委托其依赖的行为类上的对应的方法。
* 策略模式的好处在于,将子类中共同的行为剥离出来,放在行为类中,让子类动态的绑定行为类,多个子类具有相同的行为,就可以绑定用一个行为类,而不必全部实现某一接口。更重要的意义在于,这是一种松耦合的设计原则,采用了组合代替继承的方式。每个子类都可以动态的定制行为类
二.使用场合
1.以不同的格式保存文件;
2.以不同的算法压缩文件;
3.以不同的算法截获图象;
4.以不同的格式输出同样数据的图形,比如曲线 或框图bar 等。
三。应用实例:
1.对策略对象定义一个公共接口。
2.编写策略类,该类实现了上面的公共接口。
3.在使用策略对象的类中保存一个对策略对象的引用。
4.在使用策略对象的类中,实现对策略对象的set和get方法。
在Swing边框的例子中,公共接口是javax.swing.Border。策略类是LineBorder、EtchedBorder、HandleBorder等。而使用策略对象的类是JComponent。
分享到:
相关推荐
实验一 Strategy模式的应用 某公司专门销售各种打印机,销售打印机时都有一定的折扣让利给顾客,但折扣计算的方法有很多种,如:不打折;每台减扣固定的金额;按售价的5%打折等等,且折扣计算方法可能发生变化。...
Strategy模式是一种行为设计模式,它使你能在运行时改变对象的行为。这种模式的核心思想是将算法族封装在独立的对象中,使得它们可以互换使用,让算法的变化独立于使用算法的客户。 在上述的国际电子商务系统案例中...
Strategy模式是一种设计模式,主要目的是为了在运行时动态地改变对象的行为。在本文中,我们将通过一个奇幻角色扮演游戏(RPG)的例子来解释这个模式,以便更好地理解其工作原理。 在RPG游戏中,我们有四种角色:...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。 在策略模式中,我们创建表示各种策略的对象和一个行为根据...
在“一个strategy模式的例子.rar_strategy_设计模式”这个压缩包中,包含了两个关键文件,一个是“www.pudn.com.txt”,可能是相关资料链接或介绍,另一个是“strategy”,可能是一个具体的策略模式实现代码。...
Strategy模式封装算法。如果有多个算法可以互换使用,Strategy比较合适。 Bridge模式是对抽象和具体的进一步抽象。
在软件设计领域,Strategy模式是一种行为设计模式,它使你能在运行时改变对象的行为。Java作为面向对象编程语言,提供了丰富的特性支持这一模式的应用。在这个小型电子商务系统简单模拟项目中,我们利用Strategy模式...
Strategy模式是设计模式中的一种行为模式,它允许在运行时动态地改变对象的行为。这种模式的核心思想是定义一系列算法,并将每一个算法封装起来,使它们可以相互替换,让算法的变化独立于使用算法的客户。在C++中...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。 在策略模式中,我们创建表示各种策略的对象和一个行为根据...
设计模式体现的是一种思想,而思想则是指导行为的一切,理解和掌握了设计模式,并不是说记住了23种(或更多)设计场景和解决策略(实际上这也是很重要的一笔财富),实际接受的是一种思想的熏陶和洗礼,等这种思想...
这些类可能分布在不同的包或目录下,例如`com.example.designpattern.strategy`,并且可能还有测试类来验证策略模式的正确性。 在实际应用中,策略模式有以下几个优点: - **封装变化**:每个策略类都封装了一种...
Strategy模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,Strategy模式的核心思想是定义一系列算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户而变化。 在给出的...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在上述的"打印机销售折扣计算"问题中,策略模式能很好地解决需求变化带来的挑战。通过策略模式,我们可以将每种折扣计算方法封装为一个独立的类,这些...
Strategy模式提供了一种将算法族封装到各自独立的对象中,使得它们可以互换使用的方法。这样,我们可以避免硬编码特定的算法,而是让代码更加灵活,易于扩展。 在本范例中,我们将重点讨论如何应用Strategy模式来...
设计一个邮寄包裹的收费系统,在邮寄类型确定的情况下,包裹的邮资由包裹的重量a,邮寄距离b,保价金额c三个参数决定。系统使用图形用户界面,用户在图形用户界面选择邮寄类型,再输入重量、距离和报价金额,单击...
**策略模式(Strategy Pattern)**是面向对象设计模式中的一种行为模式,它允许在运行时改变对象的行为。在Java编程中,策略模式被广泛应用于处理算法的可互换性问题,使得程序能够根据不同的环境或者需求选择合适的...
这个压缩包文件“设计模式之_Strategy_00_源码与文档.rar”包含了关于Strategy模式的源码实现和相关文档,便于深入理解和学习。 Strategy模式的核心思想是定义一系列算法,并将每一个算法封装起来,使它们可以相互...
Java设计模式中的Strategy模式是一种对象行为型模式,其主要目的是定义一系列算法,并将这些算法封装成独立的类,使得它们可以互相替换,让算法的变化独立于使用算法的客户。在Strategy模式中,核心思想是封装可能...