设计模式
设计模式是在大量的实践中总结和理论化后优选的代码结构、编程风格、以及解决问题的思考方式。
单例模式(singleton)
- 饿汉式
class SingletonTest {private static SingletonTest instance = new SingletonTest();private SingletonTest() {}public static SingletonTest getInstance() {return instance;}}
2.懒汉式
dcl失效问题通过volatile解决
class Singleton {/* 私有构造方法,防止被实例化 */private Singleton() {}/* 此处使用一个内部类来维护单例 */private static class SingletonFactory {private static Singleton instance = new Singleton();}/* 获取实例 */public static Singleton getInstance() {return SingletonFactory.instance;}}
代理模式(proxy)
工厂模式
- 工厂方法模式—-普通工厂模式
建立一个工厂类,对实现了同一个接口的一些类进行实例的创建
//接口public interface sender {public void sender();}//邮件实现类public class MailSender implements sender {@Overridepublic void sender() {System.out.println("发送邮件");}}//短信实现类public class SmsSender implements sender {@Overridepublic void sender() {System.out.println("发送短信");}}//工厂类public class Factory {public sender produce(String type){if(type.equals("sms")){return new SmsSender();}else if(type.equals("mail")){return new MailSender();}else{System.out.println("请录入正确的类型");return null;}}}//根据传入的type生产public static void main(String[] args) {Factory f = new Factory();sender s = f.produce("sms");s.sender();}
- 工厂方法模式—-多个工厂方法模式
提供多个工厂方法,分别创建对象。
只修改工厂类
public class Factory {public sender produceMile(){return new MailSender();}public sender produceSms(){return new SmsSender();}
- 工厂方法模式—-静态工厂方式模式
public class Factory{public static sender produceMile(){return new MailSender();}public static sender produceSms(){return new SmsSender();}}
- 抽象工厂模式
对工厂类进行抽象,创建多个工厂类
public interface Provider {public Sender produce();}public class SendMailFactory implements Provider {@Overridepublic Sender produce(){return new MailSender();}}public class SendSmsFactory implements Provider{@Overridepublic Sender produce() {return new SmsSender();}}
