设计原则和设计模式

1.设计原则:前人根据项目经验总结出一套开发项目的规则。
1.1:单一职能原则:一个类只对外提供一种功能。
作用:方便分工合作,每个类只专注自己业务。
1.2:里氏替换原则:所有子类出现的地方都可以用父类替换。
作用:提高程序可扩展性和可维护性。
1.3:依赖倒置原则:能依赖于抽象的就不依赖于具体。
作用:提高程序可扩展性和可维护性。
1.4:迪米特原则:低耦合,高内聚(降低类与类之间的依赖性,提高类的独立性)。
耦合度:依赖性。
内聚性:独立性。
1.5:开闭原则:所有程序对扩展开放,对修改关闭。
1.6:接口隔离原则:一个接口只被设计一种功能。
使用:提高接口的灵活性和扩展性。

2.设计模式:前人根据项目经验总结出对特定问题一种特定解决方案。
2.1:单例模式:一个类一生只有一个对象。
作用:减少创建对象所产生系统开销。
使用:私有化构造方法,声明私有的静态对象,声明公有静态方法获得对象

2.1.1:饿汉式的单例模式:缺点:相对来说虚资源。

eg:/**
 * 饿汉式的单例模式
 * @author sx
 * @version 1.0 2019年7月16日
 */
public class King1 {
	private String kname;
	private int wifeCount;
	
	/**
	 * 私有构造方法
	 */
	private King1() {
		
	}
	
	/**
	 * 私有静态对象
	 */
	private static King1 k1=new King1();
	
	/**
	 * 公有静态的方法获得对象
	 * @return King1
	 */
	public static King1 getKing() {
		return k1;
	}
	

	public String getKname() {
		return kname;
	}
	public void setKname(String kname) {
		this.kname = kname;
	}
	public int getWifeCount() {
		return wifeCount;
	}
	public void setWifeCount(int wifeCount) {
		this.wifeCount = wifeCount;
	}
}

2.1.2:懒汉式的单例模式:缺点:在多线程中使用不安全。为了解决安全问题,可以用线 程同步。

eg:/**
 * 懒汉式的单例模式
 * @author sx
 * @version 1.0 2019年7月16日
 */
public class King2 {
	private String kname;
	private int wifeCount;
	
	/**
	 * 私有构造方法
	 */
	private King2() {
		
	}
	
	/**
	 * 私有静态对象
	 */
	private static King2 k2;
	
	/**
	 * 公有静态的方法获得对象
	 * @return King1
	 */
	public synchronized static King2 getKing() {
		if (k2==null) {
			k2=new King2();
		}
		return k2;
	}
	

	public String getKname() {
		return kname;
	}
	public void setKname(String kname) {
		this.kname = kname;
	}
	public int getWifeCount() {
		return wifeCount;
	}
	public void setWifeCount(int wifeCount) {
		this.wifeCount = wifeCount;
	}
}

2.2:装饰者模式:用一个新类作为装饰者类,将原有的类作为装饰都类的属性,重写原有类的方法或者扩展方法,使原有类的功能更强大。
作用:增强原有类的功能。
使用:声明一个类,让这个类与原来需要装饰的类实现相同的接口或者继承相同的类,将原来需要装饰的类的对象作为新类的属性用构造方法传过来,重写原需要装饰的类方法使其功能更加强大。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值