23中设计模式
(一)设计模式的简介:
1.什么是设计模式?
2.设计模式有何作用?
答:使系统有很好的扩展性;是面向对象中反复出现的问题的解决方案;也是针对特定环境下特定问题的解决方法和方式;为软件重构提供了目标;
3.有哪几种设计模式?
答:有23中;分为三大类,创建型模式、结构型模式、行为型模式
其中创建型模式有5中:工厂模式、单利模式、抽象工厂模式、建造者模式、原型模式
4.设计模式用于哪些方面?
答:设计模式主要用于软件设计,作用:为软件开发人员提供平台;最佳的设计模式;
5.设计模式的原则?
6.了解demo的含义:电脑中的demo指展示电脑图片和音乐的一种程式;
(二)工厂模式
相关代码:
定义一个接口:
package zdbDesignPattern.factory; public interface Sharp { //定义一个形状接口,并有三个实现类 //相应的网址:http://www.runoob.com/design-pattern/factory-pattern.html public void draw(); }
定义三个实现类:
package zdbDesignPattern.factory; public class Circle implements Sharp { @Override public void draw() { System.out.println("circle"); } } package zdbDesignPattern.factory; public class Rectangle implements Sharp { @Override public void draw() { System.out.println("Rectangle"); } } package zdbDesignPattern.factory; public class Square implements Sharp { @Override public void draw() { System.out.println("square"); } }
创建一个工厂
package zdbDesignPattern.factory; public class SharpFactory { //使用getSharp方法,可以获取形状类型的对象 public Sharp getSharp(String sharp){ if(sharp==null){ return null; }else if(sharp.equals("SQUARE")){ return new Square(); }else if(sharp.equals("RECTANGLE")){ return new Rectangle(); }else if(sharp.equals("CIRCLE")){ return new Circle(); } return null; } }
使用该工厂,通过传递该类的信息获取该类的对象:
package zdbDesignPattern.factory; public class FactoryPatternDemo { /** * @param args */ public static void main(String[] args){ //创建工厂,利用工厂中的方法得到相应的对象 SharpFactory sharpFactory = new SharpFactory(); //获取square对象,并调用他的方法 Sharp sharp1 = sharpFactory.getSharp("SQUARE"); sharp1.draw(); //获取rectangle对象,并调用他的方法 Sharp sharp2 = sharpFactory.getSharp("RECTANGLE"); sharp2.draw(); //获取circle对象,并调用他的方法 Sharp sharp3 = sharpFactory.getSharp("CIRCLE"); sharp3.draw(); } }
(三)单例模式
创建一个类:
package zdbDesignPattern.singleton; public class SingleObject { //创建一个SingleObject对象 private static SingleObject instance = new SingleObject(); //将构造函数私有化,这样该类就不会被私有化 private SingleObject(){}; //获取唯一可用的对象 public static SingleObject getInstace(){ return instance; } public void show(){ System.out.println("北京 我来了!"); } }
从singleObject中获取唯一的对象
package zdbDesignPattern.singleton; public class SinglePatternDemo { /** * 从SingleObject中获取唯一的对象 */ public static void main(String[] args) { //获取唯一的对象,并调用其方法 SingleObject object = SingleObject.getInstace(); object.show(); } }