1、简述 适配器模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器模式分为类适配器模式和对象适配器模式,却别在于被适配的对象是通过继承还是组合来完成。 适配器实现了接口转换,在不修改客户端或者目标类的前提下,使得目标类与客户端的接口兼容。 例如现在有一个220V的充电器,用户希望新增一个功能让这个充电器可以适配22V的设备,但是同时也需要保留220V的充电功能,这个时候就需要使用适配器模式,来保留他原来的功能,同时新增功能。 2、类适配器 类适配器通过继承被适配的对象来实现新接口功能的适配,ChargerAdapter中,继承charger220V保留了原来的方法,同时实现了新功能。在下面的代码中,Charger220V就是要适配的对象。 public class Charger220V { public int charging(){ System.out.println("输出220V电压"); return 220; } } public interface Charger100V { public int charging(); } public clas.... 有更新! 适配器模式 程序人生
临界资源需要保持他的唯一性,再代码中,可以通过单例模式来实现(这里是典型的生产者/消费者问题) 构造方法中,用synchronized来做同步处理,为了避免每次进来都要给代码加锁影响性能,先在外层套if做判断 这里的connectionMap就是一个临界资源,代码初始化创建了8个数据库链接,放在map里面,然后多线程来获取调用这些connection 为了保证临界资源的安全,对获取链接和放回链接做了一个枷锁的处理,建立一个ReentrantLock锁,然后获取两个条件,获取连接的时候,判断是否有链接,有就继续,放回链接的时候,判断链接池是否已经满了,没满就放回 package cn.com.enersun.datahub.powerevent.consumer.database; import java.sql.Connection; import java.util.HashMap; import java.util.LinkedList; import java.util.Map; import java.util.concurrent.locks.Condition; impor.... 有更新! 多线程占用临界资源 程序人生
1.工厂模式 工厂模式根据传递的参数来决定生产的产品,增加产品需要改动工厂的的代码,在明确不同条件生产不同实例的情况下可以使用这个模式(一般这个模式可以应付大多数场景了) 代码 手机接口: public interface Phone { void phoneInfo(); } 华为手机 public class Huawei implements Phone { @Override public void phoneInfo() { System.out.println("我是华为手机"); } } 小米手机 public class Xiaomi implements Phone { @Override public void phoneInfo() { System.out.println("我是小米手机"); } } 生产工厂,在工厂中,根据不同的类型,生成不同的手机 public class PhoneFactory { public Phone createPhone(String type){ Phone product =null; switch (type){.... 有更新! 工厂模式 程序人生
1.代理模式 代理模式给原对象提供了一个代理对象,代理对象可以访问原对象的引用,扩展功能,符合设计模式的开闭原则(可以扩展,禁止修改内部功能)。 代理模式有静态代理、动态代理和cglib代理,静态代理一个代理只对应了一个原对象,动态代理利用反射机制,一个代理可以对应多个原对象,cglib代理也可对应多个原对象,动态代理在运行时动态创建一个类实现原对象的接口作为代理类来使用,cglib代理在运行时动态创建一个类继承原对象来带使用。 2.静态代理 接口 public interface User { void sayHello(); } 接口实现 public class TeacherImpl implements User { public void sayHello() { System.out.println("I'm teacher"); } } 代理类(代理类中,我们用代理类的方法sayHello来访问原对象User的sayHello()方法,并且扩展了该方法,这其实就是代理的主要作用--在不修改源代码的情况下,扩展服务功能) public class UserProxy .... 有更新! 代理模式的Java实现 程序人生