项目设计思想学习

老师在给我们讲设计思想的时候第一句话就是
* 设计思想,是需要不断领悟的。。。*

                      一.项目框架结构大概是这样的

大概是这样的,先在一个大的系统,下面分许多子系统,子系统后面分很多模块,模块又分为很多组件。 (组件是一个能完成一定功能的封装体)当然,有时候一个模块或者子系统也可以看成一个大系统里面的组件。没有绝对的规定之类的,只是一个层次关系。 

二。Java程序设计的基本原则

基本原则1。
1.1 面向接口编程: 为什么要面向接口编程呢? 我觉得一个模块和它的接口就相当于一个空调和它的控制面板,当外界需要使用空调的时候不需要去考虑内部怎么具体让空调制冷和摆风等功能。只要会使用控制面板即可。 这样带来的好处在于,空调内部不管我怎么修改,只要保证面板(接口)不改变都不会影响外部其他的类对空调的使用。这大概就是接口的封装隔离的特性吧。

1.2优先使用对象组合而非类继承
举个例子:

// A类和B类分别有两种方法
class A (){  t1(); t2(); }
class B (){   t3();t4(); }
//C类要调用A类和B类里面的方法(当然可以采用继承,用对象集合更好)
//采用组合的方式替代继承---法1 ---对象的生存周期长了,容易发生多线程隐患
    private B b = new B();
    public void t3(){
        b.t3();
    }
    public void t4(){
        b.t4();
    }
//采用组合的方式替代继承---法2
    public void t1(){
        new A().t1(); //用局部匿名对象来实现---生存周期短
    }
    public void t2(){
        new A().t2();
    }

为什么要优先集合对象而不采用继承呢? 因为继承的一个特性是单一继承,就、相当与继承变成了一种仅能用一次的资源了,所以当我们可以采用其他方法实现时尽量采用其他方法,把资源留给后面使用。

1.3采用分层思想:把项目分为多个层,上一篇已经讲过了,具
体参考上一篇。

1.4层间交互的基本原则
① 表现层调用逻辑层,逻辑层调用数据层,不可以反过来。
② 层间交互也应该通过接口进行调用,以确保各层的实现独立变化。(交互需要开销,次数尽量减少)

基本原则2
2.1开闭原则(OC原则):简单点说就是对新增开放,对修改关闭。而且应尽量做到不用修改模块的源代码,就能更改模块的行为。
(删除肯定更加不块的啦),通过新增代码,调用新的代码来达到修改则块的行为,这就是遵守了开闭则 。                                                                           
举个例子:

//接口API
public interface Api {
    public void t1();
}
// 原来的实现功能代码
 public class Impl1 implements Api{
    @Override
    public void t1() {
      System.out.println("111111111111");
    }
}
//现在版本升级需要改变功能,根据OC原则不能修改原来代码,新写一个功能代码
public class Impl2 implements Api{
    @Override
    public void t1() {
        System.out.println("22222222222");

    }
}
// 客户端调用情况,通过类反射调用,依赖的时字符串,
// 用具体方法去遍历文件即可找到新增代码文件明
public class Client{
    public static void main(String[] args) throws Exception{
        //Api api = new Impl2();
        Class c = Class.forName("cn.hncu.design.two.Impl1");
        Api api = (Api) c.newInstance();
        api.t1();
    }
}                      

**2.2依赖性倒置原则
**
:这个原则就是要依赖抽象而不是依赖具体实现类。我的理解就是和接口类似,抽象就和控制面板一样不会改变,后面的依赖不会容易出错。当实现类挂了,控制面板没变,实现类一修改后面就好了。

2.3接口隔离原则:尽量不要使用通用的接口,即不同的用户应当为其设计不同的接口使用。好比,电视剧,洗衣机都全*        部放到空间的控制开关哪儿控制,不方便。容易出错

2.4替换原则:子类应当可以替换父类并出现再父类能够出现的任何地方。(表示不是很理解,子类从父类继承过来的,难道还有一些父类可以使用的地方,子类不能吗?)  

                                  ## 三。类设计的基本经验 ##     
  1.类要单一:  所设计的类的功能要单一,一个类应该时描述一类及其相关的是把类看成最基本的功能块,使用的时候需要 某个功能的时候调用某个类。属性和方法。就是讲能设计类的时候,不要把很多功能都写在同一个类里面。

2.加强内聚,松散耦合: 指的时一个类尽量把它需要的功能在内部实现,避免去调用、他的类。这样可以减少连带出错,即当你依赖的类出错时,你也会出错。
                                  
 3.好的封装性:写代码的时候,为了保证安全,尽量把代码的权限是为private(私有的),不需要对外开放的一律不对外开放。写的时候可以先把所有的权限都设置为private  然后再逐步把需要对外开放的权限放开
 
4.类的粒度要合理: 一个类的代码不超过1000行,一个方法的代码不超过100行。(我也不知道是为什么,前人的经验吧) 

 5.实现类不能依赖的它使用类:一个类依赖(使用或者调用)另一个类,那么再另一个类中就不要反过来再依赖当前类(说这么长,就是两个类不要互相依赖呗!)        
      
 6.合理考虑接口和抽象类的使用:优先使用接口,如果既想约束子类行为,又要为子类提供公共功能采用抽象类。
   
7.其他类设计的时候要考虑性能,灵活,可扩展。以为未来发展的趋势。                                                                                                                

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值