设计模式:
模式化的解决方案
三类
创见型模式:
单例模式,工厂模式
结构型模式:
装饰模式,代理模式
静态代理,动态代理
行为型模式:
模板模式,迭代器模式
单例模式:
又名单实例模式
使用这个模式设计的类,全局应保证只有一个实例,不管什么时候都只有一个实例
package day30; /** * * 单例模式->当前类的实例,全局唯一 */ public class Box { private int width; private int height; private static Box box = new Box();//定义一个私有的当前类型的属性 private Box(){//私有的构造方法,外接就不能通过new 来创建实例了 } public static Box getBox(){//定义一个公用的静态方法,用于获取当前类型的,静态方法需要使用static属性 return box; } public int getWith(){ return width; } public int getHeight(){ return height; } public void setWith(int width){ this.width = width; } public void setHeight(int height){ this.height =height; } } package day30; public class TestBox { public static void main(String[] args){ Box b1 = Box.getBox(); b1.setHeight(2); Box b2 = Box.getBox(); System.out.println(b1 == b2); System.out.println(b2.getHeight()); } }
单例模式的实现步骤:
1·私有化构造方法
2·提供一个共有的静态的可以获取当前类型实例的方法
3·定义一个私有的静态的当前类型的实例,给步骤2的方法返回
模板模式:
定义一个操作中的算法过程的骨架,而将部分细节操作延迟到子类去实现
package day30; public abstract class Person {//抽象类,对于模板大多是抽象的 public void sayHello(){//介绍自己 System.out.println("大家好"); System.out.println("我叫"+getName()); System.out.println(getInfo()); System.out.println(sayGoodBye()); } public abstract String getName(); public abstract String getInfo(); public abstract String sayGoodBye(); } package day30; public class Student extends Person{ public String getInfo(){ return "个人基本情况、教育背景、学习经历、外语和计算机应用水平、工作经验、个人成果获奖情况、能力和专长"; } public String getName(){ return "lmdtx"; } public String sayGoodBye(){ return "88"; } } package day30; public class Teacher extends Person{ public String getInfo(){ return null; } public String getName(){ return ""; } public String sayGoodBye(){ return "さようなら"; } } package day30; public class TestPerson { public static void main(String[] args){ Person p1 = new Student(); p1.sayHello(); Person p2 = new Teacher(); p2.sayHello(); } }
时间: 2024-10-14 10:39:37