`
lwbbupt
  • 浏览: 36222 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java设计模式——设计基本原则

阅读更多

设计原则一:找出应用中可能需要变化的部分,把它们独立出来,不要和不需要变化的代码混在一起。
         当我们的需求改变时,需要修改某一部分的代码,可以将这一部分的代码抽取出来,如果以后再次发生变化,可以只修改抽取出来的代码,而不必修改其他的代码。
设计原则二:针对接口编程,而不是针对实现编程。
        利用java中多态的特性,针对超类型的编程,而不必关心具体执行时真正对象的类型。

设计原则三:为了交互对象之间的松耦合设计而努力。

        松耦合设计,指我们在需要修改一些模块时,不会对其他模块产生影响。

设计原则四:类应该对扩展开发,对修改关闭

 

设计原则五:最少知识原则,不要让太多类耦合在一起

               就任何对象而言,在该对象的方法内,我们只应该调用属于以下范围的方法:该对象本身的方法;被当做方法的参数传递进来的对象;此方法所创建或实例化的任何对象;对象的任何组件。

      


eg:

 

 

/**
* Created by lwb on 2014/11/16.
*/
public abstract class Duck {
    FlyBehavior flyBehavior;
    public void fly() {
        flyBehavior.fly();
    } //针对接口编程,并不关心具体的实现类。同时将需求中需要变化的代码抽离了出去。

    public void setFlyBehavior(FlyBehavior flyBehavior) {
        this.flyBehavior = flyBehavior;
    }

    public void swim(){
        System.out.println("All ducks can swim...");
    }
}
public class MallardDuck extends Duck {

}

public interface FlyBehavior {
    public void fly();
}


public class FlyWithWings  implements FlyBehavior{

    @Override
    public void fly() {
        System.out.println("I'm flying...");
    }
}

public class Cannotfly implements FlyBehavior {

    @Override
    public void fly() {
        System.out.println("I cannot fly...");
    }
}



public class MiniDuckSimulator {
    public static void main(String[] args) {
        MallardDuck mallardDuck = new MallardDuck();
        mallardDuck.setFlyBehavior(new FlyWithWings());//动态的指定飞行的方式
        mallardDuck.fly();
        mallardDuck.swim();
    }
}

 

  • 大小: 27.7 KB
1
2
分享到:
评论
4 楼 lwbbupt 2014-11-17  
come_for_dream 写道
谢谢分享,我也在学习设计模式


是的,最近也在学习,一起坚持学玩吧
3 楼 come_for_dream 2014-11-16  
谢谢分享,我也在学习设计模式
2 楼 yidao620c 2014-11-16  
come_for_dream 写道
问下图是用什么工具画的

intellij idea自带的UML工具
1 楼 come_for_dream 2014-11-16  
问下图是用什么工具画的

相关推荐

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    本资料“《java设计模式》课后习题模拟试题解答——刘伟.zip”主要涵盖了Java设计模式的学习与应用,特别是针对刘伟教授的相关课程的课后习题及模拟试题的解答。 设计模式分为三大类:创建型、结构型和行为型模式。...

    java设计模式——告诉新手一些不知道的东西

    在编程世界中,Java设计模式是面向对象编程领域的一个重要概念,它为解决常见的软件设计问题提供了可重用的解决方案。对于新手来说,设计模式可能显得深奥难懂,但它们实际上是经验丰富的开发者用来提高代码质量、可...

    设计模式——JAVA.docx

    ### JAVA设计模式总结之23种设计模式及六大原则 #### 一、设计模式之六大原则 ##### 总原则:开闭原则(Open Close Principle) 开闭原则是设计模式中最核心的原则之一,它强调的是软件实体(类、模块、函数等)...

    java设计模式经典教程

    ### Java设计模式经典教程知识点概览 #### 一、设计模式概述 设计模式是一种软件设计方法,它为软件开发者提供了一种标准化的方式去解决常见的软件设计问题。设计模式的使用可以提高代码的可读性和可维护性,同时...

    设计模式——简单工厂模式

    **设计模式——简单工厂模式** 简单工厂模式是创建型设计模式的一种,它提供了一种创建对象的最佳方式。在简单工厂模式中,一个专门的类(称为工厂类)负责创建对象,客户端无需知道所创建的对象的具体类,只需要...

    设计模式——工厂方法模式

    工厂方法模式是面向对象设计模式中的一种,它属于创建型模式,主要解决的是当系统需要创建的对象具有多种类型,而具体创建哪种类型的对象在运行时才能确定的问题。在这个压缩包中,`FactoryMethod`可能包含了Java...

    JAVA设计模式学习12——装饰器模式

    这种模式在Java中尤其常见,因为它允许我们遵循“开闭原则”——对扩展开放,对修改关闭。 装饰器模式的核心在于定义一个抽象组件接口(Component),这个接口定义了基本的行为和属性。然后有一个具体的组件类...

    java设计模式——单例模式

    【Java设计模式——单例模式】 单例模式是一种常见的软件设计模式,它的核心思想是确保在应用程序的整个生命周期中,某个类只有一个实例存在。这种模式主要用于控制类的实例化过程,减少系统资源的消耗,提高系统...

    java设计模式之——策略模式

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式主要通过定义一系列的算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户而变化。这种模式的核心是策略...

    Java设计模式——工厂设计模式

    面向对象设计的基本原则: OCP(开闭原则,Open-Closed Principle):一个软件的实体应当对扩展开放,对修改关闭。 DIP(依赖倒转原则,Dependence Inversion Principle):要针对接口编程,不要针对实现编程。 LoD...

    java毕业设计——java+mysql crm客户关系管理系统.zip

    7. **设计模式**:如单例模式、工厂模式、观察者模式等,可以提高代码的可读性和可复用性。 8. **异常处理和日志记录**:保证程序的健壮性,通过异常处理捕获并处理可能出现的问题,日志记录则方便后期排查和分析...

    JAVA程序设计 ——房屋租借系统

    此外,该系统可能还运用了MVC(Model-View-Controller)设计模式,分离了视图、模型和控制逻辑,使得开发和维护更加清晰和高效。 最后,项目中提到的标签"apache"可能暗示了项目使用了Apache相关组件,如Apache ...

    Java设计模式综合应用场景

    在这个实验报告中,主要讨论了三种设计模式——策略模式、装饰模式和工厂模式的综合运用,以解决一个国际电子商务系统的订单处理问题。 1. **策略模式**: 策略模式的核心在于将算法族封装在独立的可互换的策略类...

    实验七 设计模式——创建型模式.docx

    ### 实验七 设计模式——创建型模式 #### 一、实验目的 1. **掌握设计模式:** 通过本实验,学生将深入了解三大类型的23种设计模式,并掌握每种模式的基本工作原理及其适用场景。 2. **应用场景设计:** 学生能够...

    java设计模式

    目录: 前 言 第一部分 大旗不挥,谁敢冲锋——热身篇 第1章 单一职责原则 1.1 我是“牛”类,我可以担任多职吗 1.2 绝杀技,打破你的传统思维 1.3 我单纯,所以我快乐 1.4 最佳实践 ...附录:23个设计模式

    设计模式——装饰模式

    装饰模式是一种设计模式,它允许在不改变对象自身的基础上,在运行时给对象添加新的行为或属性,从而扩展其功能。这种模式遵循开闭原则,即对扩展开放,对修改关闭。在Java等面向对象语言中,装饰模式通常通过继承和...

Global site tag (gtag.js) - Google Analytics