`
hehebendan
  • 浏览: 81922 次
  • 性别: Icon_minigender_1
  • 来自: 伊拉克
社区版块
存档分类
最新评论

java设计模式(一)

阅读更多
JAVA设计模式:

一) 创建模式:创建模式分为了:单例模式,工厂模式,建造模式,已经原型模式。

    1):单例模式: 为什么要有单利模式,使用单例模式干什么? 以及怎么使用单例模式单例模式主要是为了让某一个类不想让其外部随意的NEW对象,使用单例,就是为了保证在程序运行期间,就只有一个实例,这样就能有效的节约系统资源,减少很大一部分的开销了,因此,第一步:将构造方法变为private的。将构造方法设置为private后,外部将不可能通过new来产生对象了,因此,我们必须在本类产生出一个对象出来,那么外部又该怎么来得到这个对象? 因此该提供方法,返回这个对象,方法是静态的。
    总结为三步:1)构造方法私有化。 2)产生一个对象出来。3)提供取得这个对象的方法。

下面是代码的实现:
   
    public class Singleton{
        
       private Singleton(){}
  
       private static Singleton singleton = new Singleton();
 
       public static Singleton getSingleton(){
            return singleton;
       } 
    }

   

  上面的代码是在类加载的时间就产生出了singleton的对象,下面的这种实现方式,是在第一次调用的时间才会去产生对象,实现延迟加载。对于上面的代码,在某种特殊的情况下会产生多个对象,也就是在当前类,加载多次时,可能产生多个实例。
 
    public class Singleton{
        
       private Singleton(){}
  
       private static Singleton singleton = null;
 
       public static synchronized Singleton getSingleton(){
            if(singleton==null){
                singleton=new Singleton();
          } 
          return singleton;
       } 
    }
  

  

下面的代码实现双锁机制:
  
   public class Singleton{

	private Singleton() {}

	private static Singleton singleton;

	public static Singleton getSingleton() {
		if (singleton== null) {
		   synchronized (Singleton.class) {
			if (singleton== null) {
			   singleton= new Student();
			    }
		      }
		}
	return singleton;
	}

   }

   
 
    2)工厂模式:谈及到工厂模式毫无质疑的肯定是创建对象的,为什么要用工厂模式,使用工厂模式有什么样的好处,以及怎么使用工厂模式? 使用工厂模式减少new对象,将客户类和工厂类进行分离,这便是为什么要使用工厂模式,使用工厂模式能有效的减少类与类之间的侵入性,降低耦合度。
       客户类:就是使用类对象的类。工厂类:当然就是创建对象的类。
    最原始的工厂模式:例如下面代码:
         public class  Factory(){
             
             public static Object getObject(int a){
                
                  if(1==a){
                      ClassA a = new ClassA();
                      return a;
                  }
                  if(2==a){
                    ClassB b = new ClassB();
                      return b;
                  }
             }
         }
      

像上面这段代码,如果当我们在新增一个类的时候,那么很明显,我们不得不修改代码,添加上if条件了,很明显的违背了开闭原则。那么应该怎么做,要去掉if,我们可以这么想,我们不在让一个超级工厂去建造所有的对象了,我们抽象出来一个大工厂,在定义一些小工厂,让小工厂实现抽象工厂,然后在写一些小的工厂让这些小的工厂去创建某一类的对象,这样当我们有新增类的时候,我们只需要添加一个工厂即可,满足了开闭原则。例如下面代码:
   
         public abstract class BaseFactory{
       
         public abstract void  create();
	public abstract BaseFactory getFactory();

        }     
   

  
        public class FactoryA extends BaseFactory {

	@Override
	public void create() {
		// TODO 自动生成方法存根
		System.out.println("工厂A开始生产了");
	}

	@Override
	public BaseFactory getFactory() {
		// TODO 自动生成方法存根
		 BaseFactory  fa = new FactoryA();
		return fa;
	}
   

       
        public class FactoryB extends BaseFactory {

	@Override
	public void create() {
		// TODO 自动生成方法存根
		System.out.println("工厂B开始生产了");
	}

	@Override
	public BaseFactory getFactory() {
		// TODO 自动生成方法存根
		 BaseFactory  fa = new FactoryB();
		return fa;
	}

}

        


  
     public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自动生成方法存根
           BaseFactory bf = new FactoryB();
         BaseFactory base =   bf.getFactory();
         base.create();
	}

}
   
  


        3)原型模型: 原型模式没有什么好说的,用原型模型来创建对象,可以节省对象的创建时间,减少系统资源的消耗。需要注意的是,利用原型模型创建出来的对象跟源对象是完完全全不同的两个对象,使用原型模式,需要注意的是实现Cloneable接口,重写object的Colne方法。在此随便提及一下,对于clone,分为深度克隆,和浅度克隆。所谓的深度克隆就是说将方法和行为全部克隆下来,浅度克隆是复制了引用而已,还是指向的是原对象。因此只做一个简单的例子测试。
  
  public class MyClone implements Cloneable {
 
	private String name;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	protected Object clone() throws CloneNotSupportedException {
		Object obj =null;
		 obj=super.clone();
		return obj;
	}      
}


   public class Test {

	public static void main(String[] args) throws CloneNotSupportedException {
		// TODO 自动生成方法存根
		MyClone my = new MyClone();
		my.setName("李四");
		MyClone myc = (MyClone) my.clone();
		myc.setName("张三");
		System.out.println(my.getName());
		System.out.println(myc.getName());
		System.out.println(myc == my);
	}

}


上面例子输出了,张三,李四,证明了Clone出来的完完全全是不同的两个对象;

      4)构建模式(builder)

构建模式主要要来把创建对象的的过程和部件的创建来进行分解开来,书写一个构建类,一个指挥类,以及产品类。 构建类抽象一个接口出来,一个指挥类,产品类抽象出来, 例如,生产奥拓和奥迪这两种牌子的车,他们两种车的零件几乎是相同,只是质量不一样,可以弄2个实现类,一个类生产奥拓,一个类生产奥迪。生产好了返回即可。 指挥类,就要来进行一个中转。 
分享到:
评论

相关推荐

    java 设计模式 一个txt 一个pdf

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可重用性、可维护性和灵活性。本资源包含一个PDF文档和一个TXT文本文件,两者都详细介绍了Java设计模式的基本概念和...

    JAVA设计模式(java设计)

    Java设计模式是面向对象编程领域中的重要概念,它是一套被广泛接受并实践的解决软件设计问题的经验总结。设计模式并非具体的代码或库,而是一种在特定情境下为了解决常见问题而制定的通用解决方案的描述。它们描述了...

    java设计模式pdf

    《Java设计模式PDF》是一本由James W. Cooper编写的经典书籍,该书详细介绍了Java编程语言中的设计模式,并通过实际案例深入探讨了这些模式的应用场景和实现细节。 在本书的前言部分(第3页),作者简要介绍了设计...

    《Java设计模式》课程设计报告.docx

    《Java设计模式》课程设计报告主要探讨了如何利用Java编程语言和MyEclipse集成开发环境来实现基于设计模式的西瓜市场系统。这个项目涵盖了四种重要的设计模式:单例模式、代理模式、建造者模式和抽象工厂模式,为...

    java设计模式(刘伟)

    ### Java设计模式(刘伟) #### 一、引言 在《Java设计模式》这本书中,作者刘伟全面地介绍了24种经典的设计模式,并通过丰富的案例和代码示例进行了详细的解析。本书不仅适合初学者作为入门教材,也适合有一定...

    Java 经典设计模式讲解以及项目实战

    Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...

    《Java设计模式》刘伟 课后习题及模拟试题答案.rar

    《Java设计模式》是刘伟老师的一本经典教材,它深入浅出地讲解了软件设计中的重要概念——设计模式。设计模式是经验丰富的开发者在解决常见问题时总结出的通用解决方案,是软件开发中的智慧结晶。这本书的课后习题和...

    java设计模式之工厂模式

    java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式...

    java设计模式考试题.docx

    java设计模式考试题全文共4页,当前为第1页。java设计模式考试题全文共4页,当前为第1页。 java设计模式考试题全文共4页,当前为第1页。 java设计模式考试题全文共4页,当前为第1页。 java设计模式考试题全文共4页,...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    Java设计模式是软件工程中的一种最佳实践,它总结了在特定场景下解决常见问题的经验,为程序员提供了可重用的解决方案。本资料“《java设计模式》课后习题模拟试题解答——刘伟.zip”主要涵盖了Java设计模式的学习与...

    java设计模式.高清影印版

    Java设计模式是软件工程中的一种最佳实践,它提供了一套标准的解决方案,用于解决在编写可维护、可扩展和高效代码时经常遇到的问题。这些模式是经验丰富的开发者们在面对相似问题时,经过反复试验和优化后总结出的...

    《Java设计模式》课后答案-刘伟.rar

    《Java设计模式》是刘伟教授的一本关于设计模式的教材,主要面向高等学校的学生和对Java编程有深入兴趣的开发者。设计模式是软件工程中的一种重要思想,它封装了在特定场景下的问题解决方案,可以提高代码的可读性、...

    设计模式示例代码(java)

    设计模式示例代码(java)设计模式示例代码(java)v设计模式示例代码(java)设计模式示例代码(java)设计模式示例代码(java)设计模式示例代码(java)设计模式示例代码(java)设计模式示例代码(java)设计模式示例代码(java)...

    Java 设计模式 第二版

    本书通过一个完整的Java项目对经典著作Design Patterns一书介绍的23种设计模式进行了深入分析与讲解,实践性强,却又不失对模式本质的探讨。本书创造性地将这些模式分为5大类别,以充分展现各个模式的重要特征,并...

    重学java的设计模式

    Java作为一门广泛应用的开发语言,其设计模式的应用对于提高代码质量、可维护性和可扩展性至关重要。本文将着重探讨创建型模式、结构型模式和行为模式这三大类设计模式,并结合六项设计原则进行深入解析。 首先,...

    java设计模式课程设计

    使用5种设计模式完成的一个点单系统,显示不同系列下的所有商品,点击选择冰度甜度之后添加到订单中,计算总金额,下单之后发送订单到门店的后厨制作商品。使用了抽象工厂模式、装饰模式、单例模式、代理模式、原型...

    java设计模式学习

    Java设计模式是面向对象编程中的一种最佳实践,它提供了一种在特定情境下组织代码的通用方法。本资料“java设计模式学习”包含了对设计模式的深入理解和实际应用,通过简单实用的例子,帮助开发者掌握如何在Java项目...

    java设计模式ppt

    Java设计模式是软件工程中的一种最佳实践,它提供了一种在特定情况下解决常见问题的标准化方法。这份"java设计模式的上课ppt"很可能是对Java设计模式深入理解的一个教学资源,涵盖了各种模式的原理、应用和示例。...

    java设计模式pdf(英文版java设计模式)

    java设计模式pdf(英文版java设计模式),介绍java的经典设计模式,不过是英文版,有助于大家提高英语水平!

Global site tag (gtag.js) - Google Analytics