精华内容
下载资源
问答
  • 面向对象介绍

    2014-02-18 16:46:39
    汇编语言将机器指令映射为一些可以被人读懂助记符,如ADD、SUB等。 高级语言 高级语言屏蔽了机器细节,提高了语言抽象层次,程序中可以采用具有一定含义数据命名和容易理解执行语句。这使得在书写程序时...

    机器语言就是一些机器能读懂的二进制指令集合

    汇编语言将机器指令映射为一些可以被人读懂的助记符,如ADD、SUB等。

    高级语言
    高级语言屏蔽了机器的细节,提高了语言的抽象层次,程序中可以采用具有一定含义的数据命名和容易理解的执行语句。这使得在书写程序时可以联系到程序所描述的具体事物。

    传统的程序设计方法可以归结为“程序=算法+数据结构”,将程序定义为处理数据的一系列过程。这种设计方法的着眼点是面向过程的,特点是数据与程序分离,即数据与数据处理分离。 

    结构化程序设计的基本思想是采用自顶向下、逐步细化的设计方法和单入单出的控制结构。其理念是将大型程序分解成小型、便于管理的任务。如果其中的一项任务仍然过大,则将它分解为更小的任务。这一过程将一直持续下去,直到将程序划分为小型的,易于编写的模块。


    很多数据仍然属于整个程序,因而结构化程序设计思想还是需要有很多的全局变量,在某个地方进行更改,所以会对整个程序产生难以预料的影响


    比如在家就餐:

    准备菜   买菜、洗菜、切菜、烧菜、上桌就餐

    考虑问题的时候以算法为重心,而不是以数据为重心,要求一个软件负责人,他了解整个系统的任务分解,当问题复杂度超过了个人能够理清各个子系统之间的调用关系时,这种自顶向下的方法可能失效,因而容易出现软件危机


    结构化程序设计为处理复杂问题提供了有力手段,但到80年代末,这种设计方法逐渐暴露出以下缺陷:

    程序难以管理

    数据修改存在问题

    程序可重用性差

    用户要求难以在系统分析阶段准确定义,致使系统在交付使用时产生许多问题。

    用系统开发每个阶段的成果来进行控制,不能适应事物变化的要求。

    面向过程程序设计缺点的根源在于数据与数据处理分离


    程序 = 对象 + 对象 +对象

    面向对象将系统看成通过交互作用来完成特定功能的对象的集合。每个对象用自己的方法来管理数据。也就是说只有对象内部的代码能够操作对象内部的数据。

    对象 = 算法 + 数据

    面向对象三个特征:

    封装、继承、多态


    面向对象(Object Oriented )是认识事务的一种方法,是一种以对象为中心的思维方式

    面向对象的程序设计:

    对象=(算法+数据结构)

    程序=对象+对象+……+对象

    面向对象程序设计模拟自然界认识和处理事物的方法,将数据和对数据的操作方法放在一起,形成一个相对独立的整体——对象(object),同类对象还可抽象出共性,形成类(class )。一个类中的数据通常只能通过本类提供的方法进行处理,这些方法成为该类与外部的接口。对象之间通过消息(message)进行通讯。


    比较:

    与结构化设计抽象的层次不同

    (以操作为重心)结构化设计方法应用的是过程抽象。所谓过程抽象是将问题域中具有明确功能定义的操作抽取出来,并将其作为一个实体看待。


    (以数据为重心)数据抽象是较过程抽象更高级别的抽象方式,将描述客体的属性和行为绑定在一起,实现统一的抽象,从而达到对现实世界客体的真正模拟。


    对象与对象的相互作用 才是操作!!所以是淡化过程的,只要对象的功能是相对稳定的,还是可以复用了,并不会因为流程没有考虑好,而使得对象一无是处


    从计算机的观点看对象

    对象是计算机内存中的一块区域。通过内存分块每个对象在功能上相对保持独立。

    这些内存不但存储数据,也存储代码。这保证对象是受保护的,只有对象中的代码能访问存储于对象中的数据。这清楚地限定了对象所具有的功能,并且使得对象不受未知外部事件的影响,从而使自己的数据和功能不会因此遭受破坏。

    对象之间只能通过函数调用也就是发送消息来实现相互通信。

    当对象的一个函数被调用时,对象执行内部的代码来响应该调用,从而使对象呈现一定的行为。这个行为及其呈现出来的结果就是该对象所具有的功能。


    面向对象的基本特征:

    抽象、封装、继承、多态


    抽象是人们认识事物的一种方法

    抓住事物本质,而不是内部具体细节或具体实现


    注:抽象是从具体到一般的过程

    房屋:钉子+木材+钢筋+水泥

    城镇 = 房屋+建筑物

    对象->类  (归类)   从特殊到一般

    大类->小类 (分类)    从一般到特殊


    封装是指按照信息屏蔽的原则,把对象的属性和操作结合在一起,构成一个独立的对象。

    通过限制对属性和操作的访问权限,可以将属性“隐藏”在对象内部,对外提供一定的接口,在对象之外只能通过接口对对象进行操作。

    封装性增加了对象的独立性,从而保证了数据的可靠性。

    外部对象不能直接操作对象的属性,只能使用对象提供的服务。


    封装是对我们更好的服务


    继承

    拿来主义:

    继承表达了对象的一般与特殊的关系。特殊类的对象具有一般类的全部属性和服务。 

    当定义了一个类后,又需定义一个新类,这个新类与原来的类相比,只是增加或修改了部分属性和操作,这时可以用原来的类派生出新类,新类中只需描述自己所特有的属性和操作。

    继承性大大简化了对问题的描述,大大提高了程序的可重用性,从而提高了程序设计、修改、扩充的效率。


    多态性:同一个消息被不同对象接收时,产生不同结果,即实现同一接口,不同方法。

    一般类中定义的属性和服务,在特殊类中不改变其名字,但通过各自不同的实现后,可以具有不同的数据类型或具有不同的行为。


    多态使得我们能够以一致的观点来看待不同的(但又大相径庭的)对象

    同一个消息发送到不同的对象,就会呈现出不同的行为。


    继承和多态性组合,可以生成很多相似但又独一无二的对象。继承性使得这些对象可以共享许多相似特性,而多态又使同一个操作对不同对象产生不同表现形式。这样不仅提高了程序设计的灵活性,而且减轻了分别设计的负担。


    面向对象方法的特性:

    程序设计的重点在数据而不是函数

    程序由对象组成,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。 

    对象之间通过相互协作来完成功能

    函数与相关的数据紧密结合

    数据可以被隐藏

    很容易扩充新的数据和函数


    面向对象开闭原则:

    对增加开放,对修改、删除关闭

    使用该对象的原有的系统就不会发生改变


    面向对象的优缺点:

    面向对象编程的优点:

    易维护:可读性高,即使改变需求,由于继承的存在,维护也只是在局部模块,维护起来是非常方便和较低成本的。

    质量高:可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。

    效率高:在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。

    易扩展:由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。


    面向对象编程的缺点:

    运行效率会下降10%左右








    展开全文
  • java-面向对象编程-抽象类

    千次阅读 2017-04-04 15:12:40
    但实际上,在面向对象的概念中,有一个知识点是极容易被人与接口混淆的,人们往往会误解为这两者是同一个概念。但不幸的是,两者虽然有相似之处,但却是完全不一样的概念。那么,如此神秘的它到底是什么呢?让我们...

    我们在上一章中介绍了什么是接口,也说到了接口就是一组抽象的数据模型,可以理解为一组协议。但实际上,在面向对象的概念中,有一个知识点是极容易被人与接口混淆的,人们往往会误解为这两者是同一个概念。但不幸的是,两者虽然有相似之处,但却是完全不一样的概念。那么,如此神秘的它到底是什么呢?让我们揭开它的盖头来—主角登场–>抽象类。
    什么叫抽象类呢?从语义而言,抽象类的意思是指类的抽象体。什么意思呢?我们知道类是对具体事物的抽象,但是有的时候,有一些类的信息不足以去描绘出一个具体的对象,那么这些类就叫做抽象类。什么意思呢?就好比现在有三角形类,四边形类,八边形类。它们的形状都是不一样的。但是它们又都可以叫做图形,只是每个类的画法是不一样的而已。那么,在这里,我们就可以构建一个叫做图形的抽象类,然后在里面添加一个叫做画图的抽象方法,然后让三角形类,四边形类,八边形类去继承这个抽象类,再重写这个画图方法。比如:

    package testabstractclass;
    /**
     * 测试入口
     */
    public class Test1 {
        public static void main(String[] args) {
            Triangle triangle = new Triangle();
            Quadrilateral quadrilateral = new Quadrilateral();
        }
    }
    /**
     * 继承了抽象类的三角形类
     */
    class Triangle extends ABSGraph{
        public Triangle(){
            System.out.print("我是三角形-->");
            draw();
        }
        @Override
        public void draw() {
            System.out.println("三角形画法");    
        }
    }
    /**
     * 继承了抽象类的四边形类
     */
    class Quadrilateral extends ABSGraph {
        public Quadrilateral() {
            System.out.print("我是四边形-->");
            draw();
        }
        @Override
        public void draw() {
            System.out.println("四边形画法");
        }
    }
    /**
     * 抽象类
     */
    abstract class ABSGraph{
        //抽象方法
        public abstract void draw();
    }

    运行后,效果如下:
    这里写图片描述

    注意的是:一但在抽象类中声明了抽象方法,那么就必须要在子类中实现该方法,这点和接口是相似的。但和接口不同的是,抽象类中是可以存在具体的实现方法,并且该方法是可以不被子类实现而直接调用的。比如:

    package testabstractclass;
    /**
     * 测试入口
     */
    public class Test1 {
        public static void main(String[] args) {
            Triangle triangle = new Triangle();
            //直接调用抽象类的具体方法
            String name =triangle.GetName();
            System.out.println(name);
        }
    }
    
    class Triangle extends ABSGraph{
        public Triangle(){
            System.out.print("我是三角形-->");
            draw();
        }
        @Override
        public void draw() {
            System.out.println("三角形画法");    
        }
    }
    
    abstract class ABSGraph{
        //抽象方法
        public abstract void draw();
        //具体办法
        public String GetName() {
            return "ABSGraph是抽象类";
        }
    }

    运行结果如下:
    这里写图片描述

    从以上两点可以得出,其实抽象类和普通的类在语法上是很相似的,只是在标志符上用了abstracrt关键字来标明类。实例如下:

    abstract class AbsClass{
    //抽象办法,注意抽象办法不需要写方法体,同接口一样
    public abstract int absMethodName();
    //具体办法,同普通类一样
    public int comMethodName(){
        return 0;
    }
    }

    那么,抽象类和普通类有什么不一样的地方呢?主要有三点:

    1.抽象类不能直接初始化对象,必须创建一个子类去继承,并且实现抽象类中的所有抽象方法
    2.抽象类不能用private关键字标识类体或抽象方法
    3.抽象类允许包含抽象成员(但没有强制要求)
    

    注意:针对第一点,有一个地方容易让人混淆,事例如下:
    这里写图片描述
    有人可能会疑虑:不是说抽象类不能直接初始化对象吗?怎么在这个例子里面又可以呢?其实,这个问题在讲到内部类的时候,就已经说到了。在这个例子里,抽象类并没有直接初始化一个对象,而是通过一个匿名内部类继承了ABSGraph,实现了抽象方法之后,再将其向上转型为
    ABSGraph类型的triangle对象。其中涉及了多态及内部类的相关知识点。同时,因为接口也可以作为匿名内部类的继承方式,所以这里也容易被人与接口进行混淆。
    那么,既然我们说抽象类容易被人与接口进行混淆,那么他们之间有什么区别呢?我们来看看:

    1.从继承方式来看,一个子类只可以继承一个父类(不管是具体类还是抽象类),但可以继承多个接口
    2.抽象类可以实现方法的细节,但是接口是不允许存在的。这表现为:如果有两个子类继承了抽象类。那么当有需求进行更改的时候,我们只需要更改抽象类而不同更改它的子类。这等于一种模板式的设计。我们确定好了模板之后,所生产的产品是不需要再做改动的。但是如果两个自己实现了接口,当接口发生了改变时,那么它的子类是需要发生相应的改变的。这是一种辐射性设计,当协议发生改变的时候,其子类必须修改自身去适应这个协议的要求。因此,我们也说抽象类就是模板,而接口就是协议。
    3.接口中不能含有静态的方法,而抽象类中允许
    4.接口默认所有的方法为public abstract final类型,而接口的方法可以自定义。
    

    至此,关于抽象类的介绍就到此结束了,学习抽象类最主要的地方就是理解好它和普通类以及它和接口的区别在哪。因为通过这些比对,你才能更容易去理解什么是模板设计,什么是辐射设计。抽象类为什么是对事物的抽象,接口为什么是对行为的抽象。为什么说接口的层次比抽象类更高等等。对于抽象类的运用,多使用在模式设计上,比如抽象工厂模式。但不可置疑的是,抽象类和接口是最能体现面向对象编程的思想的。因此,对抽象类有一个比较清晰的了解。会让你在学习面向对象的路上走得更远哦。
    好了,我们下一章的内容是:Java-面向对象编程-几个关键字,敬请期待。如对本章内容有所疑问,可在下方评论探讨。

    展开全文
  • 设计模式的介绍

    2019-07-09 22:30:00
    设计模式简介 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的...使用设计模式是为了重用代码、让代码更容易被他人理...

    设计模式简介

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。

    什么是 GOF(四人帮,全拼 Gang of Four)?

    在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名为 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 的书,该书首次提到了软件开发中设计模式的概念。

    四位作者合称 GOF(四人帮,全拼 Gang of Four)。他们所提出的设计模式主要是基于以下的面向对象设计原则。

    • 对接口编程而不是对实现编程。
    • 优先使用对象组合而不是继承。

     

    设计模式的类型

    根据设计模式的参考书 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 中所提到的,总共有 23 种设计模式。这些模式可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns)。当然,我们还会讨论另一类设计模式:J2EE 设计模式。

    序号模式 & 描述包括
    1 创建型模式
    这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。
    • 工厂模式(Factory Pattern)
    • 抽象工厂模式(Abstract Factory Pattern)
    • 单例模式(Singleton Pattern)
    • 建造者模式(Builder Pattern)
    • 原型模式(Prototype Pattern)
    2 结构型模式
    这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。
    • 适配器模式(Adapter Pattern)
    • 桥接模式(Bridge Pattern)
    • 过滤器模式(Filter、Criteria Pattern)
    • 组合模式(Composite Pattern)
    • 装饰器模式(Decorator Pattern)
    • 外观模式(Facade Pattern)
    • 享元模式(Flyweight Pattern)
    • 代理模式(Proxy Pattern)
    3 行为型模式
    这些设计模式特别关注对象之间的通信。
    • 责任链模式(Chain of Responsibility Pattern)
    • 命令模式(Command Pattern)
    • 解释器模式(Interpreter Pattern)
    • 迭代器模式(Iterator Pattern)
    • 中介者模式(Mediator Pattern)
    • 备忘录模式(Memento Pattern)
    • 观察者模式(Observer Pattern)
    • 状态模式(State Pattern)
    • 空对象模式(Null Object Pattern)
    • 策略模式(Strategy Pattern)
    • 模板模式(Template Pattern)
    • 访问者模式(Visitor Pattern)
    4 J2EE 模式
    这些设计模式特别关注表示层。这些模式是由 Sun Java Center 鉴定的。
    • MVC 模式(MVC Pattern)
    • 业务代表模式(Business Delegate Pattern)
    • 组合实体模式(Composite Entity Pattern)
    • 数据访问对象模式(Data Access Object Pattern)
    • 前端控制器模式(Front Controller Pattern)
    • 拦截过滤器模式(Intercepting Filter Pattern)
    • 服务定位器模式(Service Locator Pattern)
    • 传输对象模式(Transfer Object Pattern)

    转载于:https://www.cnblogs.com/hellohero55/p/11160913.html

    展开全文
  • 设计模式介绍

    2017-04-12 14:12:31
    简介 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案...使用设计模式是为了重用代码、让代码更容易被
    简介

            设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 

            设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。

    GOF

            在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名为 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素)的书,该书首次提到了软件开发中设计模式的概念。

            四位作者合称 GOF(四人帮,全拼 Gang of Four)。他们所提出的设计模式主要是基于以下的面向对象设计原则:
            1. 对接口编程而不是对实现编程。
            2. 优先使用对象组合而不是继承。


    设计模式的使用

    设计模式在软件开发中的两个主要用途:

    1. 开发人员的共同平台
            设计模式提供了一个标准的术语系统,且具体到特定的情景。例如,单例设计模式意味着使用单个对象,这样所有熟悉单例设计模式的开发人员都能使用单个对象,并且可以通过这种方式告诉对方,程序使用的是单例模式。

    2. 最佳的实践
            设计模式已经经历了很长一段时间的发展,它们提供了软件开发过程中面临的一般问题的最佳解决方案。学习这些模式有助于经验不足的开发人员通过一种简单快捷的方式来学习软件设计。

    设计模式的类型

        根据设计模式的参考书 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 中所提到的,总共有 23 种设计模式。这些模式可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns)。当然,我们还会讨论另一类设计模式:J2EE 设计模式。

    序号模式 & 描述包括
    1创建型模式
    这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用新的运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。避免用户直接使用new运算符创建对象。
    • 工厂模式(Factory Pattern)
    • 抽象工厂模式(Abstract Factory Pattern)
    • 单例模式(Singleton Pattern)
    • 建造者模式(Builder Pattern)
    • 原型模式(Prototype Pattern)
    2结构型模式
    这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。
    • 适配器模式(Adapter Pattern)
    • 桥接模式(Bridge Pattern)
    • 过滤器模式(Filter、Criteria Pattern)
    • 组合模式(Composite Pattern)
    • 装饰器模式(Decorator Pattern)
    • 外观模式(Facade Pattern)
    • 享元模式(Flyweight Pattern)
    • 代理模式(Proxy Pattern)
    3行为型模式
    这些设计模式特别关注对象之间的通信。
    • 责任链模式(Chain of Responsibility Pattern)
    • 命令模式(Command Pattern)
    • 解释器模式(Interpreter Pattern)
    • 迭代器模式(Iterator Pattern)
    • 中介者模式(Mediator Pattern)
    • 备忘录模式(Memento Pattern)
    • 观察者模式(Observer Pattern)
    • 状态模式(State Pattern)
    • 空对象模式(Null Object Pattern)
    • 策略模式(Strategy Pattern)
    • 模板模式(Template Pattern)
    • 访问者模式(Visitor Pattern)
    4J2EE 模式
    这些设计模式特别关注表示层。这些模式是由 Sun Java Center 鉴定的。
    • MVC 模式(MVC Pattern)
    • 业务代表模式(Business Delegate Pattern)
    • 组合实体模式(Composite Entity Pattern)
    • 数据访问对象模式(Data Access Object Pattern)
    • 前端控制器模式(Front Controller Pattern)
    • 拦截过滤器模式(Intercepting Filter Pattern)
    • 服务定位器模式(Service Locator Pattern)
    • 传输对象模式(Transfer Object Pattern)
    设计模式之间的关系:


            设计模式的起源是面向对象程序设计思想,是面向对象设计的精髓——抽象。面向对象通过类和对象来实现抽象,实现时产生了面向对象的三个重要机制:封装、继承、多态。正是这三个机制衍生出了各种各样的设计模式。在面向对象软件设计的发展过程中,除了《设计模式》一书中提到的23中设计模式之外,新的设计模式仍然不断出现。

    设计模式(面向对象设计)的六大原则

    1、开闭原则(Open Close Principle)
        开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,是通过增加代码进行的,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。

    2、里氏代换原则(Liskov Substitution Principle)
            里氏代换原则是面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP是继承复用的基石,只有当派生类可以替换掉基类,且软件单位的功能不受到影响时,基类才能真正被复用,而派生类也能够在基类的基础上增加新的行为。里氏代换原则是对开闭原则的补充。实现开闭原则的关键步骤就是抽象化,而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。

    3、依赖倒转原则(Dependence Inversion Principle)
            这个原则是开闭原则的基础,具体内容:在开发中尽量的面向接口编程,依赖于抽象而不依赖于具体的实现。

    4、接口隔离原则(Interface Segregation Principle)
            这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。它还有另外一个意思是:降低类之间的耦合度。由此可见,其实设计模式就是从大型软件架构出发、便于升级和维护的软件设计思想,它强调降低依赖,降低耦合。一个接口不要提供太多的行为。

    5、迪米特法则,又称最少知道原则(Demeter Principle)
            一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立,降低耦合。

    6、合成复用原则(Composite Reuse Principle)
           
            合成复用原则是指:尽量使用合成/聚合的方式,而不是使用继承。在复用对象的时候,要优先考虑组合,而不是继承。因为父类的任何改变都可能直接影响子类的行为。
            在软件设计的过程中,只要我们尽量遵循以上六条设计原则,设计出来的软件一定会是一个优秀的软件,它必定足够健壮、足够稳定,并以极大的灵活性来迎接随时而来的需求变更等因素。

    展开全文
  • 【本文详细介绍了JAVA面向对象程序设计中创建型设计模式,欢迎读者朋友们阅读、转发和收藏!】1 基本概念1.1 什么是设计模式设计模式( Design pattern )是一套反复使用、多数知晓、经过分类编目、代码设计...
  • YML文件格式是YAML (YAML Aint Markup Language)编写文件格式,YAML是一种直观能够被电脑识别的的数据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互,可以被支持YAML库不同编程语言程序导入,...
  • 设计模式概述(Design pattern): 设计模式:代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件...使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可...
  • 面向对象设计原则

    2017-08-17 09:33:39
    这几天关注了一个写设计模式网站... 设计模式定义是一套被反复使用、多数知晓、经过分类编目、代码,设计经验总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。在我看来
  • 字段是对象的核心数据,如果访问修饰符是public(谁都可以访问)的话,容易被恶意赋值。 比如:将的年龄赋值为1000岁,这显然不太符合实际。 所以,字段通常用private(私有的,只能类自身内部访问)修饰,这样...
  • 上面大概就是它们的定义吧,也许你是刚接触面向对象的朋友, 不要概念的东西搞晕了,给 你举个例子吧,如果你去中关村想买几台组装的PC 机,到了那里你第一步要干什么,是不是装机 的工程师和你坐在一起,按你提供...
  • 设计模式(Design Patterns)  ——可复用面向对象软件基础 ...使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢,设计模式使代码编制真
  • 作为程序员,都周边邻居,亲戚等当做大神对待,尤其是寒暑假,经常推荐个电脑配置啥。 注意,此处有一个巨大坑! 如果购买了你推荐电脑,后续发生了某些意外,比如,运行速度慢,容易死机,不能玩某大...
  • 1、设计模式是一套反复使用、多数知晓、经过分类、代码设计经验总结;(设计模式可以说是一套开发经验,开发前应该想好自己代码采用哪些设计模式,为后期维护、开发做准备) 2、设计模式六大原则: ①...
  • 在Struts 2技术框架,所有请求均截取组件先处理,再交由动作类分发 。Struts.xml是Struts 2必须配置文件,放在WEB-INF/classes下面。 12.Struts Web应用框架是什么 它是开源框架:Struts 是 Apache 软件...
  • C++单例模式介绍

    2020-05-17 17:32:37
    使用设计模式目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编写真正工程化;设计模式是软件工程基石脉络,如同大厦结构一样。 2.单例模式 2.1什么是单例模式 一个类只能...
  • Java设计模式介绍

    2017-10-25 19:42:01
    设计模式(Design Patterns)——可复用面向对象软件基础设计模式(Design pattern)是一套被反复使用、多数知晓、经过分类编目、代码设计经验总结。使用设计模式是为了可重用代码、让代码更容易被他人...
  • 设计模式介绍 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件...使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性...
  • javascript内存管理介绍

    2016-07-23 10:36:06
    javascript内存管理介绍 像C语言一样低级语言拥有低级的的...“自动”这个词容易迷惑,并给javascript(其他高级语言)开发者一个印象:他们可以不考虑内存管理。然而正是错误。 内存生命周期 不管是任何语
  • IT开发是公认高薪行业吸引了很多人的加入,目前市场上受欢迎编程语言很多,其中java是老牌编程语言,拥有很高市场占有率,php看做是Web后端开发主要语言,而python随着人工智能时代到来而备受关注。...
  • 使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 设计模式由来 由GOF(四人帮)出版一本名为《设计模式 - 可复用面向对象软件元素》书提出设计模式概念。该书基于以下面向对象...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 396
精华内容 158
关键字:

容易被介绍对象的人