java随便写写

来源:互联网 发布:linux shell脚本入门 编辑:程序博客网 时间:2024/06/15 19:34
1、简单工厂模式(静态工厂模式)
由一个工厂对象决定创建出哪一种产品类的实例。

a、抽象类接口(interface)
b、实现抽象类接口的实例(implement)
c、new 实例的静态工厂

2、责任链模式
很多对象由每个对象对其下家的引用而连接起来形成一条链。(如每个人的责任不同,客户不管谁负责,一个一个往下传,直到被处理)


a、抽象类(abstract),定义处理逻辑方法。
b、具体对象继承抽象类(extends),并重写处理逻辑方法,自己不处理则找到下家处理。
c、new 具体对象,设置每个对象的下家对象,调用某一个对象的处理逻辑方法。

3、spring InitializingBean
a、spring为bean提供了两种初始化bean的方式,实现InitializingBean接口,实现afterPropertiesSet方法,或者在配置文件中同过init-method指定,两种方式可以同时使用
<bean id="testInitializingBean" class="com.TestInitializingBean" init-method="testInit"></bean>
b、实现InitializingBean接口是直接调用afterPropertiesSet方法,比通过反射调用init-method指定的方法效率相对来说要高点。但是init-method方式消除了对spring的依赖
c、如果调用afterPropertiesSet方法时出错,则不调用init-method指定的方法。

4、定时任务加载器
ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
//任务固定延时
scheduler.scheduleWithFixedDelay(new Runnable() {   
            public void run() {
            
            }
        }, 1, minutes, TimeUnit.MINUTES);


a、与数据库连接池类似的是,线程池在系统启动时即创建大量空闲的线程,程序将一个Runnable对象传给线程池,线程池就会启动一条线程来执行该对象的run方法,
当run方法执行结束后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个Runnable对象的run方法。 

5、Executors类
JDK1.5中提供Executors工厂类来产生连接池,该工厂类中包含如下的几个静态工程方法来创建连接池:

a、public static ExecutorService newFixedThreadPool(int nThreads):创建一个可重用的、具有固定线程数的线程池。
b、public static ExecutorService newSingleThreadExecutor():创建一个只有单线程的线程池,它相当于newFixedThreadPool方法是传入的参数为1
c、public static ExecutorService newCachedThreadPool():创建一个具有缓存功能的线程池,系统根据需要创建线程,这些线程将会被缓存在线程池中。
d、public static ScheduledExecutorService newSingleThreadScheduledExecutor:创建只有一条线程的线程池,他可以在指定延迟后执行线程任务
e、public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize):创建具有指定线程数的线程池,它可以再指定延迟后执行线程任务,corePoolSize指池中所保存的线程数,即使线程是空闲的也被保存在线程池内。

6、集群领导选举机制
CuratorFramework zkClient = CuratorFrameworkFactory.builder()
.connectString(zkAddress).retryPolicy(new RetryNTimes(Integer.MAX_VALUE, 1000)).connectionTimeoutMs(1000).build();
zkClient.start();

final LeaderLatch example = new LeaderLatch(zkClient, "/CuratorLock/leadership");
example.start();

if(example.hasLeadership())
{
logger.info("--------该服务器是主服务器-----");
}

7、设计模式
1、工厂方法模式
1.1  普通工厂模式,
就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建,通过传入不同参数创建不同实例
1.2  多个工厂方法模式,是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象
1.3  静态工厂方法,1.2的改进,即将方法写为静态,这样不用创建工厂实例而直接调用。

2、抽象工厂模式(Abstract Factory)
只是将工厂模式再封装成一个接口,然后实体工厂继承接口。  优点:可扩展性好,不需要修改原有实体代码。只需添加实体类。
Provider provider = new SendMailFactory();  
        Sender sender = provider.produce();  
        sender.Send();  

3、单例模式(Singleton)
单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:
1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。
2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。
3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。(比如一个军队出现了多个司令员同时指挥,肯定会乱成一团),所以只有使用单例模式,才能保证核心交易服务器独立控制整个流程。

4、建造者模式(Builder)
工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性.

5、原型模式(Prototype)
只需要实现Cloneable接口,覆写clone方法。

6、适配器模式(Adapter)
类的适配器模式:当希望将一个类转换成满足另一个新接口的类时,可以使用类的适配器模式,创建一个新类,继承原有的类,实现新的接口即可。
对象的适配器模式:当希望将一个对象转换成满足另一个新接口的对象时,可以创建一个Wrapper类,持有原类的一个实例,在Wrapper类的方法中,调用实例的方法就行。
接口的适配器模式:当不希望实现一个接口中所有的方法时,可以创建一个抽象类Wrapper,实现所有方法,我们写别的类的时候,继承抽象类即可。

7、装饰模式(Decorator)
装饰器模式的应用场景:
1、需要扩展一个类的功能。
2、动态的为一个对象增加功能,而且还能动态撤销。(继承不能做到这一点,继承的功能是静态的,不能动态增删。)
缺点:产生过多相似的对象,不易排错!
0 0
原创粉丝点击