## 初识angular2
1.开发之前先搭建环境CSDN环境搭建.在此之前先下载node.js,之后安装csdn中博客搭建即可。
2.
工厂模式化方法,定义一个用于创建对象的接口,使一个类的实例化延迟到其子类中进行。
实例化对象的时候,不需要使用new Object();只需要将具体的描述给工厂,工厂就会自动返回具体的实例化对象。
(1)要创建一个对象,只需要知道具体名称,就可以创建该对象了。
(2)扩展性高,如果要增加一个产品,增加一个扩展类就可以。
(3)屏蔽产品的具体实现,只需要关心产品的接口。
(1)增加产品时,需要增加一个具体的实现类和对象实现工厂,使系统中的类增加较多,可能会增加系统的复杂度。同时也增加系统类使用的依赖感。
日志记录器、数据库访问
如图:
(1)使用代理模式的好处:
若客户类不能或者不想直接饮用委托对象,可以使用代理类进行中间传递作用,从而隔离客户类和委托对象,特征是代理类和委托类实现相同的接口。
可以给代理类新加功能,拓展委托对象的功能,这样只需要修改代理类,不需要求个委托类。代理类本身并不实现业务,还是通过调用委托类的方法去实现功能。
注意:真正的实现业务还是委托类去实现的。但是可以在实现真正的业务前后添加一些公共的服务。
例如给项目加缓存和日志,就可以在代理类里面实现,而不需要改动已经封装好的委托类。
(2)有多种代理,但若按照代理创建的时期分,代理模式分为两种:静态代理和动态代理
静态代理:是由程序员创建或者特定代码工具生成的源码,再进行编译。在程序员运行之前,源文件.class文件就已经生成了。
动态代理:在程序运行时,通过反射机制动态创建的。
特点: (1)每个类只有一个实例
(2)必须自己创建这个唯一实例,即内部必须有一个私有构造方法
(3)必须给其他对象提供这个实例
例如:
懒汉式
public class Singleton {
/* 持有私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载 */
private static Singleton instance = null;
/* 私有构造方法,防止被实例化 */
private Singleton() {}
/* 1:懒汉式,静态工程方法,创建实例 */
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
调用:Singleton.getInstance().method();
优点:懒加载,需要用的时候才去加载,适合单线程操作。
缺点:线程不安全,多线程操作,不同步,如:频繁操作数据库时。
饿汉式
public class HungrySingle {
//将本例私有化,防止在外面直接实例化该类
private HungrySingle(){};
//类一加载就创建,自己建一个静态方法,只能建一次
private static HungrySingle hungrySingle = new HungrySingle();
//提供一个公共方法,获取该实例
public static HungrySingle getInstance(){
return hungrySingle;
}
}
优点:饿汉式不会出现问题
注意:通常