今天从图书馆借了本 Head First设计模式,小看了一章,感觉挺不错的所以写下来当作备忘:
书里关于这个模式的定义是:定义了算法族,分别封闭起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户.以下是一个简单的实例,具体的流程是:
先把公共的信息定义在一个父类或者是父接口中,该父类或者父接口中的变量用的都是接口类型(这些接口类型都有其实现的具体子类,暂称为a吧),然后在实现或者继承了父接口或者父类的子类(暂称为b)中针对的是父类或者父接口中的接口进行编程,最后在测试类或者是具体功能类中只需实例化a后赋给针对接口类型编程的地方,这样一来就可以实现具体算法与具体用户之间的独立和替换;
首先是父接口:
package com.jie.pattern;
public interface Duck {
public IFly fly=null; //这里两个都是接口类型
public ICry cry=null; //
public void display();
}
接着是两个接口的定义:
package com.jie.pattern;
public interface IFly {
public void fly();
}
package com.jie.pattern;
public interface ICry {
public void cry();
}
然后是实现了父接口的子类:
package com.jie.pattern;
public class FlyDuck implements Duck{
public IFly fly=null;
public FlyDuck()
{
}
public void setFly(IFly fly)
{
this.fly=fly;
}
public void fly()
{
fly.fly();
}
public void display()
{
System.out.println("Fly's duck...");
}
}
然后是实现了接口的具体类:
package com.jie.pattern;
public class FlyDuck implements Duck{
public IFly fly=null;
public FlyDuck()
{
}
public void setFly(IFly fly)
{
this.fly=fly;
}
public void fly()
{
fly.fly();
}
public void display()
{
System.out.println("Fly's duck...");
}
}
最后当然少不了一个测试类:
package com.jie.pattern;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
FlyDuck flyDuck=new FlyDuck();
flyDuck.setFly(new SubFly());//这里可以用实现了接口的具体类的实例来进行替代;
flyDuck.fly();
}
}
分享到:
相关推荐
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或时间点执行不同算法的情况。策略模式提供了一种灵活的方式来处理这种情况,通过将每种算法封装为一个...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或时间点执行不同算法的情况。策略模式提供了一种将算法族封装到各自独立的类中,并让它们之间可以互相...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件设计中,我们经常遇到需要在不同时间或根据不同条件使用不同算法的情况。策略模式允许我们将算法封装到独立的可互换的策略类中,从而使它们可以...
策略模式是一种行为设计模式,它使得算法可以在运行时被更改。这种模式允许一个类的行为或其算法在运行时根据需要进行改变,通过这种方式,我们可以轻松地扩展不同的算法而不修改现有代码。 #### 主要问题 在软件...
“[设计模式]在实用环境下特别有用,因为它分类描述了一组设计良好,表达清楚的面向对象软件设计模式。整个设计模式领域还很新,本书的四位作者也许已占据了这个领域造诣最深的专家中的半数,因而他们定义模式的方法...
5. **策略模式(Strategy Pattern)**:策略模式是一种行为设计模式,定义了一系列算法,并使其可以相互替换,使得算法的变化独立于使用算法的客户端。 6. **适配器模式(Adapter Pattern)**:适配器模式是一种...
《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...
在众多的设计模式中,策略模式(Strategy Pattern)是一种行为设计模式,它使你能在运行时改变对象的行为。在这个“JAVA设计模式例程-策略模式”的压缩包中,我们可以深入探讨策略模式的原理及其应用。 策略模式的...
19. 策略模式(Strategy Pattern):定义一个family of algorithms(算法家族),封装每一个算法,并使它们可以互换。 20. 访问者模式(Visitor Pattern):表示一个作用于某对象结构中的各元素的操作,使得可以在不...
- 策略模式(Strategy):定义一组可相互替换的算法,并将每一种算法封装起来,使它们可以互相替换。 - 模板方法模式(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 - 访问者模式...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或场景来执行不同算法的情况。策略模式提供了一种将算法族封装到各自独立的类中,并在运行时选择具体...
16. 策略模式(Strategy Pattern):定义一个算法家族,将它们一个个封装,并使它们之间可以互相替换。 学习设计模式的方法 学习设计模式需要积累案例,大量背类图,多思考、多梳理、归纳总结,尊重事物的认知规律...
策略模式(Strategy Pattern)是一种行为型设计模式,旨在将算法封装成独立的类,并使它们可以互相替换。这种模式使得算法的变化独立于使用算法的客户端,从而提供了灵活性和可扩展性。策略模式常用于需要在运行时...
这里我们关注的是一个名为"pattern.zip"的压缩包文件,它包含了23种经典的设计模式,这些模式在实践中被广泛使用,提高了代码的可读性、可维护性和可扩展性。这篇文章将详细探讨这些设计模式及其应用。 首先,23种...
23种设计模式(Design Pattern)的C++实现范例,包括下面列出的各种模式,代码包含较详细注释。另外附上“设计模式迷你手册.chm” 供参考。 注:项目在 VS2008 下使用。 创建型: 抽象工厂模式(Abstract Factory) ...
10. 策略模式(Strategy Pattern):定义一系列的算法,并将每一个算法封装起来,使它们可以相互替换。策略模式让算法的变化独立于使用它的客户端。Delphi中可以通过多态和函数指针来实现策略模式。 这些设计模式的...
13. 策略模式(Strategy Pattern):定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。 14. 模板方法模式(Template Method Pattern):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 15....
书中首先介绍了策略模式(Strategy Pattern),这是行为设计模式之一。策略模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。以诸葛亮给赵云三个锦囊妙计的...