java设计模式
学习几种设计模式
hyummy0506
这个作者很懒,什么都没留下…
展开
-
3.2 适配者模式具体应用场景举例
手机电源适配器:将220v的交流电转化成5v的直流电 package AdapterDesign.ObjectAdapter; public class AC220v { public int outputAC220v() { int output=220; System.out.println("输出交流电:"+output+"v"); return output; } }...原创 2019-06-21 22:05:44 · 156 阅读 · 0 评论 -
3 .1适配器模式概念
定义:适配器模式将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)。 使用场景: 1 系统需要使用现有的类,而这些类的接口不符合系统的需要。 2 想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。 3 需要一个统一的输出接口,而输入端...原创 2019-06-21 21:44:31 · 248 阅读 · 0 评论 -
2.4建造者模式
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 适用场景:如果一个对象有非常复杂的内部结构(很多属性),想把创建和使用分离 优点:封装性好,创建和使用分离;扩展性好,建造者之间独立,一定程度上解耦。 缺点:产生多余的Builder对象,产品内部有发生变化,建造者都要修改,成本较大。 代码如下: package Builder; public class...原创 2019-05-03 22:22:40 · 62 阅读 · 0 评论 -
2.3抽象工厂
定义:提供一个创建一系列相关或相互依赖的接口 优点:将一个系列的产品统一到一起创建,节省代码量 缺点:规定了所有可能被创建的产品集合,产品族中扩展新的产品困难,需要修改抽象工厂的接口 直接上代码: Factory类: package AbstractFactory; public interface CourseFactory { public Video getVide...原创 2019-05-01 23:48:47 · 113 阅读 · 0 评论 -
2.2工厂模式
定义:定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行 其实就是将工厂类抽象化,让生产产品的特定产品工厂继承工厂类。 代码: VideoFactory类代码: public abstract class VideoFactory { public abstract Video getVideo(); } public cla...原创 2019-04-29 21:32:09 · 92 阅读 · 0 评论 -
2.1简单工厂
定义:由一个工厂对象决定创建哪一种产品类的实例 适应场景:工厂类创建的对象比较少、客户端只知道传入工厂类的参数,对于如何创建对象并不关心 优点:只需要传入一个正确的参数,就可以获取你所需要的对象,而无需知道其创建细节 缺点:过程类的职责相对过重,增加新的产品需要修改工厂类的判断逻辑,违背开闭原则 上代码 抽象类Video: public abstract class Video { ...原创 2019-04-25 20:58:24 · 319 阅读 · 0 评论 -
1.7单例模式——容器单例模式
先上代码 package com.geely.design.pattern.creational.singleton; import org.apache.commons.lang3.StringUtils; import java.util.HashMap; import java.util.Map; /** * Created by geely */ public class C...原创 2019-04-25 20:01:01 · 255 阅读 · 0 评论 -
1.6枚举类单例模式
枚举类的单例模式可以很好的防止序列化反序列化对单例模式的破坏,以及反射对单例模式的破坏。 具体代码如下 package Singleton; public enum EnumInstance { INSTANCE; private Object data; public Object getData() { return data; } public void setData...原创 2019-04-22 22:06:00 · 101 阅读 · 0 评论 -
1.5反射破坏单例模式
反射可以得到单例类的构造器,并将构造器权限修改为true,即允许反射调用private 的构造器,从而使得该类对象不止一个,测试代码 package Singleton; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileO...原创 2019-04-22 21:02:59 · 160 阅读 · 0 评论 -
1.4序列化与反序列化对单例模式的破坏
在文件写入Object实例时,导致了序列和反序列化,并且使得写入和独读出的对象不为同一个对象,因为在序列化过程中,会新创建对象,测试代码如下 package Singleton; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.F...原创 2019-04-20 20:26:46 · 189 阅读 · 0 评论 -
1.3单例模式——饿汉式
在类初始化时就创建唯一实例,代码如下 package Singleton; public class HungrySingleton { private final static HungrySingleton instance=new HungrySingleton(); private HungrySingleton() { } public static HungrySi...原创 2019-04-20 20:22:08 · 93 阅读 · 0 评论 -
1.2懒汉模式及其问题、静态内部类实现单例模式
懒汉模式代码 package Singleton; public class LazySingleton { private static LazySingleton lazySingleton=null; private LazySingleton() { } public static LazySingleton getInstance() { if(lazySing...原创 2019-04-20 18:35:24 · 327 阅读 · 0 评论 -
1.1 单例模式特点
私有构造器、线程安全、延迟加载、序列化与反序列化、反射原创 2019-04-22 20:29:36 · 154 阅读 · 0 评论