![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面向对象思想 设计模式
刘德利_Android
编程需要一种思想,写代码是艺术的体验,体会面向对象编程,面向接口编程,带来的智慧,体会写代码中的乐与怒,每当去学习一种设计模式就会发现自己多么渺小,发现OOP是多么强大。
展开
-
面向对象思想设计_计算器小程序(设计模式入门篇_01)
名称:简单计算器程序面向对象思想的由来:面向对象编程思想的由来是从面向过程演变而来,所以我们用一个简单的计算器程序用面向过程的方式去实现以下是面向过程方式实现计算器程序:public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in);原创 2016-12-14 16:35:32 · 7870 阅读 · 4 评论 -
策略模式(设计模式_02)
策略模式,其实就是封装变化,为了更加好理解,直接写一个简单案例来说明:首先抽象一个打印的类,这个类里面有打印方法,就是简单的打印一句话// 定义一个抽象打印的类public abstract class Print { // 定义打印一句话的方法 public abstract void printMethod();}// 写一个子类A,继承父类 Printpublic cla原创 2016-12-14 17:41:52 · 422 阅读 · 0 评论 -
单一职责原则(设计模式_03)
由来:单一职责原则的由来,是面向对象核心思想,高内聚 低耦合,中的高内聚体现,一个类只负责一个类改做的事情,职责分清楚,写一个案例来体现:以下案例是违反了单一职责原则的模拟代码:public class Main { // 模拟:这是没有体现出单一职责原则,因为写在了一起,造成了高耦合度 // 算法: 是一个单一职责原则 // 界面: 是一个单一职责原则 public s原创 2016-12-14 17:58:49 · 552 阅读 · 0 评论 -
单例模式(设计模式_10)
今天我们来说说一个非常常用的模式,单例模式,单例模式让某个类中有自己的实例,而且只实例化一次,避免重复实例化,单例模式让某个类提供了全局唯一访问点,如果某个类被其他对象频繁使用,就可以考虑单例模式,以下用代码来分析:饿汉式单例模式举例:/* * 饿汉式单例模式 * 饿汉式的这种单例模式是线程安全的 * 需要根据业务需求来觉得要不要使用饿汉式单例模式 */public class Si原创 2016-12-16 14:49:46 · 315 阅读 · 0 评论 -
外观模式(设计模式_12)
由来:外观模式的由来,举一个例子:研发人员做了一个系统给客户用户使用,客户用户不需要知道那么多的具体细节,客户用户访问这些,具体的细节,耦合度也比较高,所以就定义了 一个外观对象,外观对象去处理这些具体的细节,客户用户只需要去访问外观对象,的行为即可外观模式在设计中非常的常见,这种模式可以减低耦合度,区域划分的比较灵活,不需要增加客户用户的复杂度;我们来看几个案例来说明分析:常规的写法:/** *原创 2016-12-19 19:38:32 · 452 阅读 · 0 评论 -
原型模式(设计模式_09)
今天给大家介绍一种模式,原型模式例如:要创建很多个对象,常规思维是 new 对象(),new 对象(),new 对象(),new 对象(),new 对象(),new 对象(),new 对象(),new 对象(),省略…原型模式可以去复制对象,而不是创建new对象,提高性能,以下就用一个案例来以说明:在用案例说明之前,首先了解 Cloneable接口Cloneable接口 (对象克隆): Obj原创 2016-12-16 10:19:32 · 328 阅读 · 0 评论 -
工厂方法模式(设计模式_08)
工厂方法模式遵循了,开放封闭式原则,我们直接用案例来体现:// 定义一个电脑接口public interface IComputer { // 获取电脑组件的方法 public void myStyle();}// 电脑适配器实现电脑接口public class Adapter implements IComputer{ public void myStyle() {原创 2016-12-15 19:02:51 · 341 阅读 · 0 评论 -
面向对象在生活中世界
面向对象是怎么来的,是由面向过程演变而来,所以我们要对面向过程有一个简单的了解,最常见的面向过程理解就是想用有什么就创建一个什么来用,没有太多的全面思考,而面向对象的出现就是为了修复面向过程的种种不足,面向对象的出现后,相比面向过程有了更多的思考,考虑了如何复用,如何扩展起来好维护,如何降低代码的耦合度,如何提高一个对象该做的事情单一职责,所以说面向对象体现出来的思想,主要包含了,高内聚,低耦合,可原创 2016-12-15 17:13:26 · 2444 阅读 · 0 评论 -
开放封闭原则(设计模式_04)
由来:开放封闭式原则是遵循面向对象思想开发扩展性的体现,简单明了的理解就是,对修改关闭,对扩展开放,以下写一个例子来体现:// 加法类public class AddCount { public double countMethod(double count1, double count2) { return count1 + count2; }}// 客户端调用计算原创 2016-12-14 18:33:52 · 654 阅读 · 0 评论 -
装饰模式(设计模式_06)
装饰模式,可以动态给对象增加一些额外的职责,比子类更加灵活,通常使用继承来实现扩展性,继承的子类越来越多,会增加复杂性,装饰模式的特点是:装饰者与被装饰者拥有共同的超类,继承的目的是继承类型。以下用一个案例来实现装饰模式:// 定义装饰接口public interface IDecoration { // 定义显示show装饰的方法 public void show();}// 定义原创 2016-12-14 19:50:41 · 372 阅读 · 0 评论 -
代理模式(设计模式_07)
代理模式,说得很通俗的话就是,客户要去办证,找代理办证,代理会自己去找办证公司去办证,最后客户端只知道代理办证成功,不会让客户知道办证是那一家公司,办证的流程等等…, 以下就用一个简单的案例来说明:// 定义一个办证的抽象类public class Proxy extends Permit{ private Permit permit = null; public Proxy() {原创 2016-12-14 20:05:11 · 357 阅读 · 0 评论 -
方法模版模式(设计模式_11)【精品博客】
今天给大家介绍的是:模版方法模式,这个模式非常的常见,很多开发者,无意中其实就已经用到了,也非常简单,只是还不知道,这属于一种设计模式而已,而关于这个设计模式,在网上有很多专业性词语来说明,看的人审美疲劳。其实这个设计模式,通俗易懂的来讲,就是把子类重复的东西,定义到父类中模块化起来,父类只需要去管理好算法流程框架,把经常变化的点,让子类去继承完成。我们看下面几道案例来理解就OK了:案例一:在很久原创 2016-12-19 12:54:42 · 2350 阅读 · 2 评论 -
迪米特法则(设计模式_13)
迪米特法则简单易懂的话语来描述就是:知道的越少越好,什么知道越少越好呢,两个类之间交互的越少越好,从而可以减低耦合度,当两个类之间的交互很少,耦合度就会降低,耦合度一旦降低,修改其中一个类就不会对另外一个类造成影响:我们直接看案例来说明分析:以下是违反了迪米特法则案例: 煮菜类与买菜类,洗菜类,交互的比较多,耦合度增高:/** * 定义一个买菜类 * @author Liudeli */c原创 2016-12-20 14:00:24 · 471 阅读 · 0 评论 -
建造者模式(设计模式_14)
建造者模式,是将建造(制造)很多产品对象中很多复杂过程,封装了起来,直接给用户一个建造好的产品对象,用户不需要关系这个非常复杂的产品是如果建造出来的;生活中举例:一个客户去买汽车,他去了专卖店花钱买了一台汽车,给客户的是完整的汽车,不可能给客户是汽车的零件(发动机,方向盘,电池,轮胎……..),还让客户自己去组装吧!建造者模式的建造者定义了建造规范,被建造者建造出来的产品,遵循的是建造者的规则,就像原创 2016-12-26 13:51:44 · 283 阅读 · 0 评论 -
简单工厂模式,工厂方法模式,抽象工厂模式 三大案例 (设计模式_16)
工厂模式,细分下来为(简单工厂模式,工厂方法模式,抽象工厂模式 ),每一种模式的使用都是在应用场景的不同来决定;案例一:(简单工厂模式) 简单工厂模式,根据工厂接收的类型来决定,返回的对象的具体实例,简单工厂模式在扩展性方面表现不足,(增加对象需要修改工厂代码,才能完成)简单工厂模式,实际上就是一个工厂非常简单的运用,工厂根据接收不同的类型,返回不同 的实例对象,(想要扩展必须要修改工厂代码才行原创 2016-12-29 18:48:45 · 1010 阅读 · 0 评论 -
抽象工厂模式(设计模式_17)
抽象工厂模式:的简单理解是,用来生成不同的产品族(就像一个家族一样),例如:总工厂,分工厂,每个工厂都可以制造,其他很多不同的产品;以下举例两个案例,来体现抽象工厂模式:案例一:(造汽车) 制造各种名牌汽车,有总工厂,分工厂来制造,各种不同品牌的汽车;package com.oop.demo4.car1;/** * 抽象出奔驰车制作标准规范接口 * @author Liudeli * */原创 2016-12-29 19:37:16 · 320 阅读 · 0 评论 -
状态模式(设计模式_18)
状态模式,例如在一个对象中,用了if/switch这种语句判断,而产生的(方法过长)时,如果以后扩展增加功能的话,就需要去改,if/switch这种语句里面的代码,这样的话就违背了开放封闭式原则, 所以在这种情况下就可以考虑状态模式, 如果判断很简单那就没有必要用状态模式了面向对象设计中希望做到责任分解以下就举例(案例),从传统方式,演变成状态模式的过程:传统方式完成:package com.oop原创 2016-12-30 16:44:01 · 296 阅读 · 0 评论 -
适配器模式(设计模式_19)
适配器模式的理解,在生活当中就有很多的适配器,例如:笔记本电脑的适配器(充电器),在其他国家地方给笔记本电脑充电的电压是不一样的,例如在外国220V电压,在中国110V电压,电压不一样去给笔记本电脑充电是不行的,这就需要一个适配过程,于是就有了充电适配器,来适配给笔记本电脑充电的处理;通俗易懂的来讲,其实适配器模式是给不符合使用的(类,抽象类,接口,行为 …),完成一个匹配的过程。注意:大部分情况下原创 2017-01-01 14:03:37 · 278 阅读 · 0 评论 -
备忘录模式(设计模式_20)
备忘录模式,在一个对象保存内部状态,然后在这个状态之外的对象保存整个状态,注意:要注意内存的管理;备忘录模式,通俗易懂的话语来讲,其实就是将整个对象保存在内存中,这样会有什么好处呢? 例如:以前我们玩单机游戏,(打飞机游戏)刚开始玩的时候生命值是100,等打了很多很多战机之后,受过很多伤害,生命值慢慢的就变成了0,然后就输了,输了之后会有一个(重新再来一局)操作,可以恢复到初始状态,其实在打飞机游原创 2017-01-01 16:26:02 · 319 阅读 · 0 评论 -
组合模式(设计模式_21)
组合模式,网上的各种专业术语搞得人,审美疲劳,其实通俗易懂的理解就是,让使用者对单独对象还是对组合对象使用都是一致的,组合模式是以树形结构的表示,组合模式和装饰模式有相似点,只是他们的应用场景是不一样的,以下代码举例演示:package com.oop.demo1;/** * 抽象出家族抽象类 * @author Liudeli * */public abstract class Fami原创 2017-01-02 12:58:51 · 276 阅读 · 0 评论 -
迭代器模式(设计模式_22)
迭代器模式的定义,就是提供一种方法访问内聚对象的各个元素信息,然而不暴露该对象的内部表示其实在 Java或者是C#这样的语言当中已经都把迭代器定义在了内部中,注意:(有集合的地方就有迭代器)// Java内部里面定制好了迭代器,例如:List<String> list = new ArrayList<String>();list.add("111");list.add("222");list原创 2017-01-02 15:12:48 · 254 阅读 · 0 评论 -
合成聚合复用原则(设计模式_23)
在面向对象思想编程中的继承体系中,关于继承,子类继承父类,父类一旦改变会影响到子类,这其实是不灵活的表现,而且继承的越频繁越不好维护,子类与父类有依赖关系存在,而(合成聚合复用原则)的出现,很好的 去改善了继承中这种不灵活性合成聚合复用原则:的定义就是为了改善继承体现中的,依赖性,不灵活性;关于合成聚合复用原则: 聚合指的是弱包含关系:例如(人属于人群的一部分,而人不包原创 2017-01-05 10:19:47 · 548 阅读 · 1 评论 -
桥接模式(设计模式_24)
桥接模式的定义就是,让抽象的部分与实现的部分分离,使得他们各种灵活的变化哦 可能这样见不好理解,其实简单的理解就把实现的部分进行了分类,耦合度减低了以下看案例说明:package com.oop.demo1;/** * 抽象出动物抽象类 * @author Liudeli * */public abstract class Animal { /** * 抽象出动物打印行原创 2017-01-06 09:36:17 · 292 阅读 · 0 评论 -
观察者模式(设计模式_15)
观察者模式,用通俗易懂的话来理解就是,在一个对象的改变会改变其他很多的对象,而且还不知道会改变多少个其他对象的时候,就该要考虑观察者模式了其实观察者模式在的主要工作就是解除双方的耦合度,让两端不依赖具体细节,而去依赖于抽象,所以其中一方的改变,会去更新到其他的N多方以下就举三个例子来说明,看完三个例子后,你会发现观察者模式把(依赖倒置原则)表现出来了案例一:(服务器更新手机) 更新全国所有的QQ,原创 2016-12-28 12:47:56 · 323 阅读 · 0 评论 -
依赖倒置原则(设计模式_05)
依赖倒转原则就是高层模块不能依赖底层模块,他们两个应该依赖抽象,而抽象就是接口或者抽象类,是管理他们两个的父类,由于这种关系,所以抽象不能依赖细节,而细节要依赖抽象。我们直接用案例来分析就明白了:// 定义一个语言接口public interface ILanguage { // 定义一个输出语言的方法 public String getLanguage();}// Java语言类原创 2016-12-14 19:27:29 · 466 阅读 · 0 评论