面向对象的设计模式
文章平均质量分 72
凡人1995
这个作者很懒,什么都没留下…
展开
-
面向对象的设计模式 ——适配器模式
适配器模式:听个名字都知道是干什么用了interface Target{ public abstract void Request();}class Adaptee{ public void SpecificRequest(){ Systom.out.println("特殊请求"); }}class Adap...原创 2019-03-19 16:43:10 · 167 阅读 · 0 评论 -
面向对象的设计模式 ——组合模式
组合模式:说白了就是统一接口的树状结构。好处就是树结构的类无论是枝干还是树叶使用统一的接口,当要对这些类进行操作的时候就可以用同一套代码了。abstract class Componet{ protected String name; public Component(String name){ this.name = name; }...原创 2019-03-21 16:01:50 · 219 阅读 · 0 评论 -
面向对象的设计模式 ——迭代器模式
迭代器模式:就是我们常用的迭代器这个模式的学习价值比使用价值高,因为现在很多高级语言都由迭代器语法原创 2019-03-21 18:32:28 · 213 阅读 · 0 评论 -
面向对象的设计模式 ——抽象工厂模式
抽象工厂模式:就是原来的工厂模式是多个工厂是生产一个产品类,现在是多个工厂生产多个产品类通俗的说工厂模式就像A和B厂都能生产机器人,每家的机器人不一样而已,而抽象工厂模式就是A和B厂都能生产机器人和战斗机等等。好处:就是换工厂的时候简单了,只要再Client换了不同的厂商就可以了。坏处:就是如果要添加新产品类就麻烦了,要改动的地方很多,而且更可怕的是换工厂所有的Client都要把具体实...原创 2019-03-18 15:26:16 · 206 阅读 · 0 评论 -
面向对象的设计模式 ——反射+读配置文件
反射:就是原来需要new对象这是编译阶段就确定的了,而反射就是再运行阶段根据给出的要加载的类来确定new哪一个对象,用哪个方法。加上配置文件,在程序运行到一定的阶段然后读取配置文件里面的字符串,通过字符串确定了加载的对象。我还以为反射是多么的高深的东西,结果跟着《大话设计模式》的书看着看着就明白过来了。至于怎么实现这种运行阶段加载的过程就不是我这个阶段应该去想的了。...原创 2019-03-18 15:33:42 · 187 阅读 · 0 评论 -
面向对象的设计模式 ——状态模式
状态模式:状态类有相互自动转换的方法(根据拥有状态类的对象的信号切换)。作用:其实状态方法最大的好处就是把过长过多的判断,分别放到各个类里面,根据信号来自动转换状态。打个比喻:一个人的状态有三种:好状态、一般状态、坏状态。而人的睡眠时间就决定状态切换的信号。当某一天这个人的睡眠时间只有6个小时,那么初始化设置状态为好状态,在好状态里面判断发现睡眠时间太少,切换到一般状态,在一般状态里面发现...原创 2019-03-19 12:49:20 · 284 阅读 · 0 评论 -
面向对象的设计模式 ——单例模式
单例模式:就是私有化类的构造函数,只允许实例化一次,提供判断是否已有实例对象的对象实例化函数最大的好处就是可以保证实例对象的唯一性,和把判断和实例化的过程封装起来提供调用。class Singleton{ private static Singleton instance; private Singleton(){ } p...原创 2019-03-22 22:26:40 · 162 阅读 · 0 评论 -
面向对象的设计模式 ——桥接模式
桥接模式:一些类之间的关系用关联(聚合、组合)来表示,而不是继承。这个模式的解决的是类与类之间过多的继承关系,因为继承本身耦合度高的缺陷,过多使用继承会带来扩展困难,比如如果修改父类的功能就会直接影响到子类。而且也会因为继承的结构使得一些类的复用度不够高,出现代码重复的问题。abstract class Implementor{ public abstract void Op...原创 2019-03-23 12:41:17 · 277 阅读 · 0 评论 -
面向对象的设计模式 ——命令模式
命令模式:就是把命令执行的类里面的功能拆分出来,变成一个个命令类,然后保存这些命令的执行顺序(用另外一个类)感觉命令模式是一种思想:就是拆分功能,组合功能执行顺序的作用,因为顺序是保存起来的所以回溯翻查调换顺序的操作性就变强了abstract class Command{ protected Receiver receiver; public Command...原创 2019-03-23 17:40:37 · 323 阅读 · 0 评论 -
面向对象的设计模式 ——职责链模式
职责链模式:把判断的逻辑代码放到统一接口的实现类里面和状态模式非常像,都是把判断的逻辑放到接口的实现类里面来自动切换。但他们的主要目的不一样,状态模式的解决的是一个类更换状态的功能(类似人更换状态)。而职责链模式解决的是if判断分离。不用太多区分这两种模式,都是为了解决判断代码过多过长的问题。abstract class Handler{ protected Handle...原创 2019-03-23 21:48:22 · 215 阅读 · 0 评论 -
面向对象的设计模式 ——中介者模式
中介者模式:一个类把所有的收发信息的对象引用存储起来,收发信息的对象都通过这个类来把信息传递到例外一个类。和观察者模式非常像,都是这个靠提前收集接收信息对象的引用。但是观察者模式是为了解决固定一对多的对象之间信息传递广播问题。而中介者模式解决的是类似局域网这样一对多或一对一这样的问题,中介类起到转发和存储对象的作用abstract class Mediator{ public...原创 2019-03-24 14:40:36 · 214 阅读 · 0 评论 -
面向对象的设计模式 ——观察者模式
观察者模式:主题类用集合保存观察者类,当主题类状态发生改变的时候,遍历改变观察者类。观察者模式又叫发布订阅模式,就像名字说的一个主题类发布信息,订阅的类就都有反应。而观察者模式其实还是可以用再解耦上。当两个类的耦合度高的时候可以用抽象接口来解耦。abstract class Subject{ private List<Observer> observer...原创 2019-03-17 23:07:52 · 255 阅读 · 0 评论 -
面向对象的设计模式 ——享元模式
享元模式:就是提前的申请资源备用,当多个地方要重复使用这个实例是就直接拿出来用,而不是从新new当程序多个地方都要用到这个类,而这个类那么就把这个类的参数移出来,重新抽象一个类,就可以省内存了这个模式往往要大量的重复实例才会用到。abstract class Flyweight{ public abstract void Operation(int extrinsicst...原创 2019-03-24 18:55:04 · 167 阅读 · 0 评论 -
面向对象的三大特性的思考
封装(容易找出来修改)为什么要封装,大家都能想到封装是为了把一个庞大的代码分成若干个小块容易维护,那么具体点的例子呢?比如一个控制台界面的运算器,用面向过程的代码写,首先输入两个数,然后输入运算符这样。很容易就搞定了,但是如果要修改输入的过程呢?那么你就会想,把输入的数字和运算符的顺序改一改就可以了也很简单。当然简单这是因为程序小嘛,如果这个运算器是一个庞大的用于科学计算的运算器呢?...原创 2019-03-15 10:46:18 · 128 阅读 · 0 评论 -
面向对象的设计模式——简单工厂模式
根据面向对象的方法的两大特性封装和继承封装:是为了把不同功能分开,容易修改继承:是为了方便不修改原有代码的情况下,扩展(添加功能)那么一个简单的计算器代码如下abstract class Operation{ private double numberA = 0; private double numberB = 0; public void set...原创 2019-03-15 10:46:46 · 396 阅读 · 0 评论 -
面向对象的设计模式 ——UML图
首先是简单的UML图然后是比较丰富的UML图要看明白这两张图只需要读懂下面的内容就可以了第一层是类名第二层是类的字段或属性(成员变量)第三层是类的方法+号表示public,-号表示private,#号表示protectedinterface IFly{ void Fly();}这个箭头代表继承这个箭头代表实现接口...原创 2019-03-15 11:31:25 · 1423 阅读 · 0 评论 -
面向对象的设计模式 ——策略模式
策略模式:解决策略的切换问题,统一了接口所谓的策略模式从简单的说就是利用接口和多个实现类的代码来解决不同问题的策略切换。同一个接口,这个接口的抽象方法是固定的,而各种策略方法都实现这个接口,那么我以后这个用这个接口写的代码就不用改了,想要切换不同的策略我只要修改或添加新的接口实现类就可以了。interface Strategy{ //算法 public a...原创 2019-03-15 16:14:27 · 246 阅读 · 0 评论 -
面向对象的设计模式 ——装饰模式
装饰模式:(继承过来,重写方法的时候调用原有方法和添加自己的装饰方法或代码)好处就是把类的核心功能和装饰功能分开,而且如果想要再添加装饰功能不需要反反复复的的修改原来的类abstract class Component{ public abstract void Operation();}class ConcreteComponent extends Componen...原创 2019-03-15 21:51:59 · 163 阅读 · 0 评论 -
面向对象的设计模式 ——开放封闭原则//里氏代换原则//单一原则和代理模式
对扩展是开放的,对更改是封闭的里氏代换原则:子类型必须能够替换它们的夫类型。单一职责原则:就一个类而言,应该仅有一个引起它变化的原因,如果能想到多于一个动机去改变一个类,那么这个类就具有多于一个的职责。总结起来就是低耦合高内聚代理模式(代理类和真类有共同的接口,代理类内部创建一个真类,方法里面放真类的方法)代理模式的目的是,为其他类提供一种代理以控制对这个对象的访问...原创 2019-03-16 10:14:28 · 187 阅读 · 0 评论 -
面向对象的设计模式 ——工厂模式
工厂模式:创建工厂接口,不同类的的实例化通过实现工厂接口的子工厂类完成。具体例子工厂模式其实就是在简单工厂模式上,把判断实例化的逻辑放到用户代码那边(其实客户代码本来就要判断决定使用哪一个具体类),然后工厂接口化。而保留了实例化封装和克服了开发封闭原则不用每次加新的类都要修改工厂类。(易扩展低耦合)缺点就是每添加一个新功能类都要多写一个工厂。简单工厂模式的客户端代码A...原创 2019-03-16 15:54:55 · 913 阅读 · 0 评论 -
面向对象的设计模式 ——复制模式
复制模式:先复制实例里面引用指向的实例,然后再赋值外面的实例。赋值模式主要是解决深复制的问题,说到深赋值那么就是有浅复制。浅复制:从一个实例复制到另外一个实例的时候,基本数据类型都直接复制,同样引用数据类型的也直接复制就会出现多个实例的成员变量中引用指向同一个实例(内存空间)深复制:就是如果实例中的成员变量有引用的,先把引用指向的实例先复制一份,当外层实例复制的时候,用privat...原创 2019-03-16 18:18:00 · 241 阅读 · 0 评论 -
面向对象的设计模式 ——模板方法模式
模板方法模式:一个执行逻辑框架方法,方法体内多个抽象方法组成,组成的方法需要子类实现这个模式的意义就是把固定的东西写死放在一个方法里面,而这个方法有些部分是抽象方法组成,需要子类自己实现。就像填空题。abstract class AbstractClass{ public abstract void PrimitiveOperation1(); public abst...原创 2019-03-16 21:23:14 · 308 阅读 · 0 评论 -
面向对象的设计模式 ——外观模式
外观模式:由一个类作为界面,要使用所有的子系统类都需要通过界面类的方法,而他们是没有继承实现关系的。好处就是不用研究种类繁多的子系统类,只要看明白这个界面的类就可以了。就好像自己买股票变成买基金一样,你只要研究一个基金就可以了,这个基金会去投资各个股票经典的三层架构不同层之间都应该要有一个Facade来管理繁杂的子类class SubSystemOne{ pub...原创 2019-03-17 00:05:24 · 267 阅读 · 0 评论 -
面向对象的设计模式 ——建造者模式
建造者模式:把对象的设置过程抽取出来。对于那些设置过程比较复杂的对象,可以把这一个过程抽取出来形成一个接口(规范)和一个设置过程,让具体的实现类和设置类去设置这个复杂的对象。class Product{ List<String> parts = new List<String>(); public void Add(String part...原创 2019-03-17 11:47:45 · 215 阅读 · 0 评论 -
面向对象的设计模式 ——动态代理
动态代理(就是把一些方法和类名传到JVM来生成一个class,而需要自己修改的方法才自己写)作用:那些不需要修改的方法就直接自动生成了,需要修改的才自己写。public class Test{ public static void main(String[] args){ ICar car=(ICar)Proxy.newProxyInstance(Tes...原创 2019-04-11 14:49:21 · 104 阅读 · 0 评论