`
sasipa90
  • 浏览: 14671 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
社区版块
存档分类
最新评论

Design Patterns: Strategy Pattern

 
阅读更多
   Before all, we have to understand first what a Design Pattern is. A Design pattern is a form to deal with object in the OOP so that it will be easy to change or to upgrade our information system and provide a way to let some part of system vary independently of all another part.

    In the design pattern study we have to know some vocabulary as:
    -Abstraction: a concept or idea not associates with any instance.
    -Encapsulation:  which is the restriction to access some of the object’s components or bundling of data with the method operating in data
    -Polymorphism: Is the ability to create a variable, a function or an object that has more than one form.
    -Inheritence: which is an “IS A” relationship generally used as “extends” in OOP.

Design Patterns principles like:
    -Identify the aspects of your application that vary and separate them from those what stays the same;
    -Program to an interface not to an implementation
    -Favor composition over inheritence

The Strategy Pattern defines a family of algorithm, encapsulates each one and makes them interchangeable. Strategy lets the algorithm vary independently from client that uses it.

Here is a small application of this Pattern, The Duck program.

public class FlyingWithWings implements FlyBehavior {
	public void fly(){
		System.out.println("I am flying with wings");
	}	
}

public class FlyNoWay implements FlyBehavior {
	public void fly(){
		System.out.println("I can't fly");
	}
}


public interface FlyBehavior {

	public void fly();
}


public class Quack implements QuackBehavior {
	public void quack(){
		System.out.println("I am quacking");
	}
}


public class MuteQuack {
	public void quack(){
		System.out.println("Mute quack");
	}
}


public class Squeak {
	public void quack(){
		System.out.println("I am squeaking");
	}
}


public interface QuackBehavior {
	public void quack();
}


public abstract class Duck {
	
	FlyBehavior flybehavior;
	QuackBehavior quackbehavior;
	
	public void performFly(){
		flybehavior.fly();
	}
	
	public void performQuack(){
		quackbehavior.quack();
	}
}



public class MallardDuck extends Duck {
	public MallardDuck(){
		quackbehavior =  new Quack();
		flybehavior = new FlyNoWay();
	}
	
	public void display(){
		System.out.println("I am a real mallardDuck");
	}
}


public class MiniDuckSimulator {
	public static void main(String[] args) {
		Duck mallard = new MallardDuck();
		mallard.performFly();
		mallard.performQuack();
	}
}

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

相关推荐

    design patterns elements of reusable object-oriented software

    ★第1章至第11章陆续介绍了设计模式:Strategy、Observer、Decorator、Abstract Factory、Factory Method、Singleton、Command、Adapter、Facade、TemplatMethod、Iterator、Composite、State、Proxy。 ★第12章介绍...

    Programming.in.the.Large.with.Design.Patterns

    It starts with a general introduction to all types of programming patterns and goes on to describe 10 of the most popular design patterns in detail: Singleton, Iterator, Adapter, Decorator, State, ...

    《Java Design Patterns》高清完整英文PDF版

    Learn how to implement design patterns in Java: each pattern in Java Design Patterns is a complete implementation and the output is generated using Eclipse, making the code accessible to all....

    Design.Patterns.Explained.Simply

    We've tried hard to avoid both of these categories with Design Patterns Explained Simply. This book is fast and simple way to get the idea behind each of the 29 popular design patterns. The book is ...

    designPatterns:设计模式

    design pattern 设计模式 创建型设计模式 创建型模式设计到将对象实例化,这类模式都提供了一个方法,将客户从所需要的实例化对象中解耦。 原型模式 Prototype 结构型设计模式 结构型模式可以让你把类或者对象组合到...

    DesignPatterns:带有设计模式示例的Android应用程序

    本项目"DesignPatterns:带有设计模式示例的Android应用程序"旨在通过实际的Android应用来演示各种设计模式的应用。 首先,我们要讨论的是单例模式(Singleton),这是Java中最常用的设计模式之一。单例模式确保一个...

    Design Patterns in Java

    - **策略模式**(Strategy Pattern):定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换。 - **模板方法模式**(Template Method Pattern):定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 -...

    designpatterns:GoF 设计模式的简单实现

    GoF 设计模式GoF 设计模式的简单实现... 在默认包DesignPatterns/src/会有Main*.java命名文件(每个模式的所谓包装器) ,在 Eclips 中选择一个,右键单击它, Run As > Java Application将执行它(并检查输出控制台选

    DesignPatterns:软件设计模式学科代码

    在这个名为"DesignPatterns:软件设计模式学科代码"的压缩包中,我们可以看到几个经典的面向对象设计模式被实现和应用。 1. **策略模式**(Strategy Pattern):它定义了一系列算法,并将每个算法封装起来,使它们...

    Design*Pattern*Framework*4.5

    "Design*Pattern*Framework*4.5" 可能指的是一个基于 .NET Framework 4.5 的设计模式实现或教程集合。 设计模式是经验丰富的软件开发者的智慧结晶,它们被分为三类:创建型、结构型和行为型。创建型模式涉及对象的...

    Head First Design Patterns 英文版

    ### Head First Design Patterns 英文版 #### 书籍概述 《Head First Design Patterns》是一本在软件开发领域广受好评的设计模式入门书籍。本书由Kathy Sierra与Bert Bates共同编写,采用了一种独特而富有创意的...

    DesignPatterns:设计模式

    在这个名为"DesignPatterns"的项目中,我们很可能会看到如何在Java 8环境下应用一些经典的设计模式。 首先,我们来讨论单例(Singleton)模式。单例模式确保一个类只有一个实例,并提供全局访问点。在Java 8中,...

    Design Patterns For Dummies

    - **策略模式(Strategy)**:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。 - **模板方法模式(Template Method)**:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 - **观察者模式...

    设计模式(Design Patterns).pdf

    - 策略模式(Strategy):定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换。本模式使得算法可以独立于使用它的客户而变化。 - 模板方法模式(Template Method):在一个方法中定义一个算法的骨架,...

    java-design-patterns-master_JAVAdesignpattens_java_design_

    这个压缩包“java-design-patterns-master”显然是一个专注于Java设计模式的学习资源,旨在帮助开发者深入理解和应用这些模式。下面我们将详细探讨Java设计模式及其在实际开发中的应用。 1. **单例模式(Singleton...

    DesignPatterns:通用设计模式

    1. **战略模式(Strategy Pattern)**:战略模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换。这种模式让算法的变化独立于使用算法的客户。在Java中,可以通过接口或抽象类来实现策略,使得在运行...

    design_patterns:design_patterns

    还有责任链模式(Chain of Responsibility Pattern)、解释器模式(Interpreter Pattern)、迭代器模式(Iterator Pattern)、备忘录模式(Memento Pattern)、状态模式(State Pattern)、策略模式(Strategy ...

Global site tag (gtag.js) - Google Analytics