1、单例模式
恶汉式:
private static Singleton singleton=new Singleton();
private Singleton(){}
public static Singleton getSingleton(){
return singleton;
}
懒汉式:
private static Singleton singleton;
private Singleton(){}
public static synchronized Singleton getSingleton(){
if(singleton==null){
singleton=new Singleton();
}
return singleton;
}
单例模式的改进版:怎样控制一个类平常保持三个对象,最多不能超过10个对象。就像数据库连接池一样。
2、代理模式
class Factory{
public void sell(){
System.out.println("factory的产品销售。");
}
}
class Proxy{
private Factory factory=new Factory();
public void sell(){
factory.sell();
System.out.println("proxy及代理的销售");
}
}
3、工厂模式
Interface Car{
public void drive();
}
class BMW implements Car{
public void drive(){}
}
class AODI implemnts Car{
public void drive(){}
}
public class Factory{
public static getCarInstance( string type){
Car car =null;
car = class.forName("包名"+type).newInstance();
}
}
工厂设计模式的优点在于:
1、将对象的创建过程封装,体现了j面向对象的封装特性。
2、有利于同类型对象的管理与创建。
3、使用对象更方便,使用者只要关心对象的使用而不要关心对象的创建。而且开发新的类只要实现原油接口就能被直接调用,而不要更改代码。
4、原型模式
使用原型模式复制一个对象比调用new创建一个对象在性能上要好的多,原型模式要求实现cloneAble方法重写clone()方法实现继承。因为这个是直接的在内存中的二进制流。
class A implements cloneAble{
public A clone(){
//实现克隆方法
}
}
5、创建者模式;
实现了复杂对象的生产线于其部件的隔离。创建者模式与工厂模式的区别在于:
Factory模式不考虑对象的组装过程,而直接生成一个我想要的对象。
Builder模式先一个个的创建对象的每一个部件,再统一组装成一个对象。
Factory模式所解决的问题是,工厂生产产品。而Builder模式所解决的问题是工厂控制产品生成器组装各个部件的过程,然后从产品生成器中得到产品。
class Car{
private Car car;
public coid concreate(){
car.buildPartA();
car.builePartB();
}
}
6适配器模式adapter
组合与继承(设计模式的六大原则中提到优先使用组合而不是继承)
7、组合模式
好处:
1、使客户端调用简单,客户端不用担心是调用组件还是调用对象
2、更容易在组合体中加入部件,客户端不会因为新加入部件而要修改代码。
8、装设模式
9、反射模式
10、bridge设计模式
11、享元模式(在文字处理类软件中使用)