單例模式(懶漢式,餓漢式)
来源:互联网 发布:u盘安装linux系统教程 编辑:程序博客网 时间:2024/05/29 18:59
//装饰设计模式
public class Demo6_Wrap {/** * @param args * 装饰设计模式的好处是: * 耦合性不强,被装饰的类的变化与装饰类的变化无关 */public static void main(String[] args) {DAStudent hms = new DAStudent(new Student());hms.code();}}interface Coder {public void code();}class Student implements Coder {@Overridepublic void code() {System.out.println("javase");System.out.println("javaweb");}}class DAStudent implements Coder {//1,获取被装饰类的引用private Student s;//获取学生引用//2,在构造方法中传入被装饰类的对象public DAStudent(Student s) {this.s = s;}//3,对原有的功能进行升级@Overridepublic void code() {s.code();System.out.println("ssh");System.out.println("数据库");System.out.println("大数据");System.out.println("...");}}
1,单例设计模式。
解决的问题:就是可以保证一个类在内存中的对象唯一性。
必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。
如何保证对象唯一性呢?
1,不允许其他程序用new创建该类对象。
2,在该类创建一个本类实例。
3,对外提供一个方法让其他程序可以获取该对象。
步骤:
1,私有化该类构造函数。
2,通过new在本类中创建一个本类对象。
3,定义一个公有的方法,将创建的对象返回。
//饿汉式
class Single//类一加载,对象就已经存在了。{private static Single s = new Single();private Single(){}public static Single getInstance(){return s;}}
//懒汉式
class Single2//类加载进来,没有对象,只有调用了getInstance方法时,才会创建对象。//延迟加载形式。 {private static Single2 s = null;private Single2(){}public static Single2 getInstance(){if(s==null)s = new Single2();return s;}}
适配器设计模式:
interface 和尚 {public void 打坐();public void 念经();public void 撞钟();public void 习武();}abstract class 天罡星 implements 和尚 {//声明成抽象的原因是,不想让其他类创建本类对象,因为创建也没有意义,方法都是空的@Overridepublic void 打坐() {}@Overridepublic void 念经() {}@Overridepublic void 撞钟() {}@Overridepublic void 习武() {}}class 鲁智深 extends 天罡星 {public void 习武() {System.out.println("倒拔垂杨柳");System.out.println("拳打镇关西");System.out.println("大闹野猪林");System.out.println("......");}
工厂方法
public abstract class Animal {public abstract void eat();}
public class Cat extends Animal {@Overridepublic void eat() {System.out.println("猫吃鱼");}}
public class Dog extends Animal {@Overridepublic void eat() {System.out.println("狗吃肉");}}
public interface Factory {public Animal createAnimal();}
public class CatFactory implements Factory {@Overridepublic Animal createAnimal() {return new Cat();}}
public class DogFactory implements Factory {@Overridepublic Animal createAnimal() {return new Dog();}}
public static void main(String[] args) {DogFactory df = new DogFactory();Dog d = (Dog) df.createAnimal();d.eat();}
//模板设计模式
abstract class GetTime {public final long getTime() {long start = System.currentTimeMillis();code();long end = System.currentTimeMillis();return end - start;}public abstract void code();}class Demo extends GetTime {@Overridepublic void code() {int i = 0;while(i < 100000) {System.out.println("x");i++;}}}
public static void main(String[] args) {/*long start = System.currentTimeMillis();for(int i = 0; i < 1000000; i++) {System.out.println("x");}long end = System.currentTimeMillis();System.out.println(end - start);*/Demo d = new Demo();System.out.println(d.getTime());}
阅读全文
0 0
- 單例模式(懶漢式,餓漢式)
- 设计模式(工厂模式、单例模式、模板模式)
- 设计模式(单例模式,工厂模式,适配器模式)
- 设计模式(一)创建模式(工厂模式、建造模式、单例模式)
- Java设计模式之单例模式(singleton模式)
- java设计模式之单例模式(Singleton模式)
- 设计模式之单例模式(singleton模式)
- Java设计模式之单例模式(singleton模式)
- IOS设计模式之一(MVC模式,单例模式)
- iOS设计模式之一(MVC模式,单例模式)
- 设计模式(策略模式,单例模式)
- iOS设计模式之一(MVC模式,单例模式)
- IOS设计模式之一(MVC模式,单例模式)
- iOS设计模式之一(MVC模式,单例模式)
- iOS开发单例模式(懒汉模式&恶汉模式)
- IOS设计模式之一(MVC模式,单例模式)
- iOS设计模式之一(MVC模式,单例模式)
- ios设计模式之一(MVC模式,单例模式)
- 模拟和仿真的区别
- 结合个人经历总结的前端入门方法(这才是真的入门经典)
- Spring-Cloud系列第5篇:spring-cloud-config-eureka-ribbon
- Git的理解学习笔记。
- JS之function2(对象属性方法作用域)
- 單例模式(懶漢式,餓漢式)
- oauth2添加get请求方式获取token
- linux特殊符号大全
- ubuntu14.04中安装opencv2.4.8
- 删除mac的jdk
- 微信公众号开发之token验证
- H.264标准(二)FLV封装格式详解
- Hierarchical Question-Image Co-Attention for Visual Question Answering
- JS判断是移动端浏览器