随笔分类 - 设计原则与设计模型
1
摘要:原型模式就是以一个对象作为原型构建另一个对象,也就是我们说的克隆。 克隆做法是什么呢? 对象实现克隆接口Clonable接口,将访问方法clone重写,访问权限变大。 默认的克隆是浅拷贝,指的是外层对象是new的,但是对象的属性都是通过值copy给的的,也就会出现一个问题,引用数据类型用的都是同一个
阅读全文
摘要:前面的工厂模式出现一个情况,工厂只能生产一种类别的产品(比如键盘) 如果工厂要既能生产鼠标,又能生产键盘呢?如果需要有多个工厂,都能生产鼠标和键盘呢?这就用到了我们的抽象工厂模式。 例子: 工厂是电脑工厂,能生产鼠标和键盘 工厂又分别为罗技工厂和微软工厂,两个工厂生产的鼠标和键盘是分别两个厂商的 代
阅读全文
摘要:简单工厂模式有一个问题,就是只能通过工厂代码构造特定的类型的对象。如果对象添加一个种类,那么必须修改工厂的代码。这样违背了开闭原则,因此我们讲解工厂方法模式 工厂方法模式是将工厂抽取出一个父类来,里面有一个创造对象的方法,每造一种对象写一个对应的子类工厂。这样新增子类对象就不会修改原来的代码了。 代
阅读全文
摘要:普通做法: package com.zhen.build_template.simple_factory.general; /** * @author zhen * @Date 2019/5/28 11:13 */ public interface Sender { public void send
阅读全文
摘要:原文链接: http://blog.csdn.net/yongh701/article/details/49613587
阅读全文
摘要:今天看书的时候不小心又看到了策略模式的描述,感觉挺经典的: 创建一个能够根据所传递的参数对象的不同而具有不同行为的方法,被称为策略设计模式。 这个就是我们的策略模式,使用的是传递接口对象,使用对应对象的策略处理对应的问题。 图: 简单Demo:
阅读全文
摘要:引出建造者模式: 我们上面的代码就用到了建造者模式。 建造小人的过程是稳定的,都需要头身手脚,具体建造的细节不同,有高矮胖瘦。但是对于用户而言,我只告诉你,我需要一个胖小人,我们应该在保证一个正常人的前提下对人的细节进行修饰。 如果你需要将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建
阅读全文
摘要:通过买股票与通过基金买股票引出外观模式: 外观模式Facade,为系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这一接口使得这一子接口更加容易使用 何时使用外观模式? 首先,在设计初期阶段,应该要有意识的将不同的两个层分离,比如经典的三层架构,就需要考虑在数据访问层和业务逻辑层、业务
阅读全文
摘要:如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。 迪米特法则首先强调的前提是在类的结构设计上,每一个类都应当尽量降低成员的访问权限 迪米特法则的根本思想,是强调了类之间的松耦合 类之间的耦合越弱,越易于复
阅读全文
摘要:引出模板模式: 考试试卷问题,提炼后的代码: 这里就用到了模板方法模式。 模板方法模式: 定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类不改变一个算法的结构即可重定义该算法某些特定步骤 AbstractClass是抽象,其实也就是一抽象模板,定义并实现了一个模板方法。这个模板方
阅读全文
摘要:深拷贝与浅拷贝: 区别在于浅拷贝对于引用数据类型只是引用的传递,可能导致克隆体和本体共用一个引用变量,造成互相影响。深拷贝需要重写clone,进行引用对象的值传递。
阅读全文
摘要:需求: 小明帮小张送礼物给娇娇。 代码编写: 代理模式图解: 实际操作: 让代理类和实际操作类实现同一个接口。代理类中包含一个实际类对象,在创建代理类对象的时候隐式创建实际类对象,然后调用代理类的方法本质上都是调用是实际类对象的对应方法。 与装饰者模式类似。
阅读全文
摘要:对象增强的手段: *继承 缺点:增强的内容是不能改变的 被增强的对象也是不能改变的 *装饰者模式 增强的内容是不能改变的 被增强的对象是可以改变的 不知道被增强对象的具体类型也可以使用 特点: 是你,还有你,一切拜托你。增强点! *动态代理(AOP) 被增强的对象可以切换 :Service 增强的内
阅读全文
摘要:工厂方法模式工厂方法模式概述 工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现 简单理解: 与简单工厂模式类似,简单工厂模式是一个工厂,用户将条件为构造传入工厂,逻辑判断在工厂内,工厂只是一个创建对应的子类,然后利用泛型操作。 工厂模式:不同工厂创建不同子
阅读全文
摘要:简单工厂模式概述 又叫静态工厂方法模式,它定义一个具体的工厂类负责一些类的实例优点 客户端不需要在负责对象的创建,从而明确了各个类的职责缺点: 这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某 些对象的而创建方式不通风,就需要不断的修改工厂类,不利于后期的维护
阅读全文
摘要:单例设计模式单例设计模式概述 单例模式就是要确保类在内存中只有一个对象,该实例必须自动创建,并且对外提供 优点: 在系统内存中只存在一个对象,因此可以解决系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能 缺点: 没有抽象层,因此扩展很难 职责过重,在一定程度上违背了单一职责
阅读全文
摘要:模板设计模式概述 模板方法模式就是定义一个算法的骨架,而将具体的算法延迟到子类中来实现优点: 使用模板方法模式,在定义算法骨架的同时,可以很灵活的实现具体的算法,满足用户灵活多变的需求缺点: 如果算法骨架有修改的话,需要修改实现类
阅读全文
摘要:package com.decorate; public class Iphone implements Phone{ @Override public void call() { System.out.println("手机可以打电话"); } } package com.decorate; public interface Phone{...
阅读全文
摘要:适配器设计模式概述 将一个类的接口转换成另外一个客户希望的接口。从而使原来不能直接调用的接口变得可以调用优点: 让本来不适合使用的接口变得适合使用缺点: 一次只能适配一个类,具有一定的局限性
阅读全文
摘要:单一职责原则 其实就是开发人员经常说的“高内聚,低耦合” 也就是说,每一个类应该只有一个职责,对外只能提供一种功能,而引起类变化的原因应该只有一个。在设计模式中,所有的设计模式都遵循着以原则 开闭原则 核心思想是:一个对象对拓展开放,对修改关闭 其实开闭原则的意思就是:对类的改动是通过增加代码进行的
阅读全文
1