
设计模式
对设计模式初步认识学习
所学资源来源很多,请嘴下留情,记录只是为了自己查找方便,喷子别看
奔跑的小男孩
明天会为自己今天的努力而感到骄傲。
展开
-
07-组合模式
如上图所示,在院系、大学类中都存在一个List,则department、university泛化origination的同时,也将origination聚合到自己本身。package com.design.composite;/** * 所有机构的抽象类 * @author Fighting * */public abstract class Origination { private String name; private String desc; public O..原创 2020-08-08 17:50:16 · 128 阅读 · 0 评论 -
06-适配者模式 [接口适配器]
Function中具体基于方法的适用于不同的电压的实现package com.design.adapter;/** * 电源电压 * @author Fighting * */public class PowerVoltage { //电源提供220V的电压 public int output220v(){ int powerVolatge = 220; return powerVolatge; }}package com.design.adapter.i..原创 2020-08-04 00:53:33 · 154 阅读 · 0 评论 -
06-适配者模式 [对象适配器]
区别与类适配器的主要变化,原先接口实现类中如上图所示,具体的实现类会继承实体类,然后调用其方法,现在是将实体类电源作为参数聚合到适配器的实现中,实现了基于对象的适配器。package com.design.adapter;/** * 电源电压 * @author Fighting * */public class PowerVoltage { //电源提供220V的电压 public int output220v(){ int powerVolatge = 220; ...原创 2020-08-03 23:40:37 · 186 阅读 · 0 评论 -
06-适配器模式-[类适配器模式]
package com.design.adapter;/** * 电源电压 * @author Fighting * */public class PowerVoltage { //电源提供220V的电压 public int output220v(){ int powerVolatge = 220; return powerVolatge; }}package com.design.adapter.inter;/** * 适配器接口 * @author ...原创 2020-08-02 23:11:13 · 115 阅读 · 0 评论 -
08-享元模式 [FlyWeight]
package com.design.flyweight;/** * 内部状态 * @author Fighting * */public enum DbType { ORACLE,MYSQL;}package com.design.flyweight;/** * 外部状态 * @author Fighting * */public class Consumer { private String userName; public Consumer...原创 2020-08-08 23:44:19 · 117 阅读 · 0 评论 -
03-构建者模式
package com.builder;public class Product { private int height; private String purpose; public int getHeight() { return height; } public void setHeight(int height) { this.height = height; } public String getPurpose() { return purpose; } ...原创 2020-08-03 00:47:22 · 137 阅读 · 0 评论 -
02-原型模式 [look for myself]
package com.prototype.demo;public class Code { private String ip; private String project;// 项目是什么 public Code(String ip, String project) { this.ip = ip; this.project = project; } public String getIp() { return ip; } public void setIp(S...原创 2020-08-01 12:26:26 · 278 阅读 · 0 评论 -
01-单例模式 [枚举]
package com.design.patterns;/** * * @author Fighting * 使用枚举 */public class EnumSingleton { public static void main(String[] args) { SingletonEnum instance = SingletonEnum.INSTANCE; SingletonEnum instance2 = SingletonEnum.INSTANCE; System.原创 2020-08-01 11:01:22 · 138 阅读 · 0 评论 -
01-单例模式 [懒汉 饿汉 {存在商榷} 静态内部类 ]
package com.design.patterns;/** * * @author Fighting *1.类的构造器私有化 *2.静态内部类方式在 SafeInnerSingleton 类被装载时并不会立即实例化,而是在需要实例化时,调用 getInstance 方法,才会装载 SingletonInstance 类,从而完成 SafeInnerSingleton 的实例化。 *3.类的静态属性只会在第一次加载类的时候初始化,所以在这里,JVM 帮助我们保证了线程的安全性,在类进行初.原创 2020-08-01 10:48:57 · 316 阅读 · 0 评论 -
01-单列模式 [懒汉式 双重检查]
package com.design.patterns;/** * * @author Fighting * 懒汉式加载 线程安全 * 1.将类构造器私有化,防止new对象 * 2.创建类变量 * 3.提供公共获取对象的方法,实现双重检查 */public class DoubleCheckDemo { public static void main(String[] args) { System.out.println("双重检查"); DoubleCheckSing.原创 2020-08-01 02:50:14 · 132 阅读 · 0 评论 -
01-单例模式 [懒汉式 同步代码块]
package com.design.patterns;/** * 懒汉式 同步代码块加载 线程不安全 * 1.将类构造器私有化,防止new对象 * 2.创建静态常量 * 3.提供公共获取对象的方法,只不过需要判断类对象是否为空,如果对象为空则进行创建对象,否则直接返回 */public class LazyLoadDemo_NotThreadSafe2 { public static void main(String[] args) { LazyNotSafeSingleto.原创 2020-08-01 02:16:41 · 266 阅读 · 0 评论 -
01-单列模式 [懒汉式 线程安全 synchronized同步方法]
package com.design.patterns;/** * 懒汉式加载 线程安全 * 1.将类构造器私有化,防止new对象 * 2.创建静态常量 * 3.提供公共获取对象的方法(同步方法),只不过需要判断类对象是否为空,如果对象为空则进行创建对象,否则直接返回 */public class LazyLoadDemo_ThreadSafe { public static void main(String[] args) { LazySafeSingleton lazyNotS.原创 2020-08-01 01:56:09 · 418 阅读 · 0 评论 -
01-单例模式 [懒汉式 线程不安全 ]
package com.design.patterns;/** * 懒汉式加载 线程不安全 * 1.将类构造器私有化,防止new对象 * 2.创建静态常量 * 3.提供公共获取对象的方法,只不过需要判断类对象是否为空,如果对象为空则进行创建对象,否则直接返回 */public class LazyLoadDem0_NotThreadSafe { public static void main(String[] args) { LazyNotSafeSingleton lazyNot.原创 2020-08-01 01:39:55 · 165 阅读 · 0 评论 -
01-单例模式-[饿汉式 使用静态代码块]
package com.design.patterns;/** *饿汉式使用代码块 * *1)构造器私有化 (防止 new ) *2)类的内部创建对象,只不过现在使用静态代码块进行初始化 *3)向外暴露一个静态的公共方法 * *这种写法实际上和使用静态常量是一致的 */public class NotLazyLoadDemo2 { public static void main(String[] args) { Singleton singleton = Singleton..原创 2020-08-01 01:07:56 · 187 阅读 · 0 评论 -
01-单例模式- [饿汉式 静态常量 ]
package com.design.patterns;/** *饿汉式使用静态常量加载类 * *1)构造器私有化 (防止 new ) *2)类的内部创建对象 *3)向外暴露一个静态的公共方法 */public class NotLazyLoadDemo01 { public static void main(String[] args) { Singleton singleton = Singleton.getSingleton(); Singleton singlet..原创 2020-08-01 00:56:01 · 148 阅读 · 0 评论